Ingestování z dotazu (.set, .append, .set-or-append, .set-or-replace)
Tyto příkazy spustí dotaz nebo příkaz pro správu a ingestují výsledky dotazu do tabulky. Rozdíl mezi těmito příkazy je v tom, jak zachází s existujícími nebo neexistující tabulkami a daty.
Příkaz | Pokud tabulka existuje | Pokud tabulka neexistuje |
---|---|---|
.set |
Příkaz selže. | Vytvoří se tabulka a ingestují se data. |
.append |
Data jsou připojena k tabulce. | Příkaz selže. |
.set-or-append |
Data jsou připojena k tabulce. | Vytvoří se tabulka a ingestují se data. |
.set-or-replace |
Data nahradí data v tabulce. | Vytvoří se tabulka a ingestují se data. |
Pokud chcete zrušit ingestování z příkazu dotazu, přečtěte si téma cancel operation
.
Poznámka
Tato metoda příjmu dat je určená ke zkoumání a vytváření prototypů. Nepoužívejte ho v produkčních nebo velkoobsadových scénářích.
Oprávnění
K provádění různých akcí s tabulkou se vyžadují konkrétní oprávnění:
- Pokud chcete přidat řádky do existující tabulky pomocí
.append
příkazu , potřebujete minimálně oprávnění Ingestoru tabulky. - Pokud chcete vytvořit novou tabulku pomocí různých
.set
příkazů, potřebujete minimálně oprávnění uživatele databáze. - Pokud chcete nahradit řádky v existující tabulce pomocí
.set-or-replace
příkazu , potřebujete minimálně oprávnění Správa tabulky.
Další informace o oprávněních najdete v tématu Řízení přístupu na základě role v Kusto.
Syntax
(.set
.append
.set-or-append
| | | .set-or-replace
) [async
] tableName [with
(
propertyNamepropertyValue=
[,
...]] <|
)
dotaz nebo příkaz
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
Asynchronní | string |
Pokud je zadaný, příkaz vrátí a bude pokračovat v příjmu dat na pozadí. Pomocí vráceného OperationId příkazu s příkazem .show operations načtěte stav dokončení příjmu dat a výsledky. |
|
Tablename | string |
✔️ | Název tabulky, do které chcete ingestovat data. Tabulka tableName vždy souvisí s databází v kontextu. |
propertyName, propertyValue | string |
Jedna nebo více podporovaných vlastností příjmu dat , které slouží k řízení procesu příjmu dat. | |
dotaz nebo příkaz | string |
✔️ | Text dotazu nebo příkazu pro správu, jehož výsledky se použijí jako data k ingestování. |
Poznámka
Podporují se jenom .show
příkazy pro správu.
Podporované vlastnosti příjmu dat
Vlastnost | Typ | Description |
---|---|---|
creationTime |
string |
Hodnota datetime formátovaná jako ISO8601 řetězec, který se použije při vytváření rozsahů přijatých dat. Pokud není zadán, now() použije se. Při zadání se ujistěte, že Lookback je vlastnost v efektivních zásadách sloučení Rozsahy cílové tabulky zarovnaná se zadanou hodnotou. |
extend_schema |
bool |
Pokud true , příkaz může rozšířit schéma tabulky. Výchozí je false . Tato možnost platí jenom pro .append příkazy , .set-or-append a set-or-replace . Tato možnost vyžaduje alespoň oprávnění Správa tabulky. |
recreate_schema |
bool |
Pokud true , příkaz může znovu vytvořit schéma tabulky. Výchozí je false . Tato možnost platí jenom pro .set-or-replace příkaz . Tato možnost má přednost před vlastností, extend_schema pokud jsou nastaveny obě možnosti. Tato možnost vyžaduje alespoň oprávnění Správa tabulky. |
folder |
string |
Složka, která se má přiřadit k tabulce. Pokud tabulka již existuje, tato vlastnost přepíše složku tabulky. |
ingestIfNotExists |
string |
Pokud je zadáno, příjem dat selže, pokud tabulka již obsahuje data označená značkou ingest-by: se stejnou hodnotou. Další informace najdete v tématu ingest-by: tags. |
policy_ingestiontime |
bool |
Pokud true , zásada času příjmu dat bude povolena v tabulce. Výchozí formát je true . |
tags |
string |
Řetězec JSON, který představuje seznam značek , které se mají přidružit k vytvořenému rozsahu. |
docstring |
string |
Popis použitý k dokumentaci tabulky. |
distributed |
bool |
Pokud true , příkaz ingestuje ze všech uzlů, které dotaz spouští paralelně. Výchozí je false . Podívejte se na tipy pro zvýšení výkonu. |
persistDetails |
Logická hodnota, která, pokud je zadaná, označuje, že příkaz by měl zachovat podrobné výsledky pro načtení příkazem .show operation details . Výchozí hodnota je false . |
with (persistDetails=true) |
Důležité informace o schématu
.set-or-replace
zachová schéma, pokud některá z vlastností neborecreate_schema
příjmuextend_schema
dat není nastavená natrue
hodnotu ..set-or-append
Příkazy a.append
zachovávají schéma, pokud vlastnost příjmuextend_schema
dat není nastavená natrue
hodnotu .- Porovnání schématu sady výsledků dotazu s schématem cílové tabulky je založeno na typech sloupců. Názvy sloupců nejsou shodné. Ujistěte se, že sloupce schématu výsledků dotazu jsou ve stejném pořadí jako tabulka, jinak se data ingestují do nesprávných sloupců.
Upozornění
Pokud je schéma změněno, dojde k tomu v samostatné transakci před skutečným příjmem dat. To znamená, že schéma může být změněno, i když dojde k selhání příjmu dat.
Tipy pro zvýšení výkonu
- Příjem dat je operace náročná na prostředky, která může mít vliv na souběžné aktivity v clusteru, včetně spouštění dotazů. Vyhněte se spouštění příliš mnoha příkazů pro příjem dat najednou.
- Omezte počet dat pro příjem dat na méně než 1 GB na operaci příjmu dat. V případě potřeby použijte několik příkazů pro příjem dat.
distributed
Nastavte příznak na hodnotutrue
, pokud je množství dat vytvářených dotazem velké, překračuje 1 GB a nevyžaduje serializaci. Výstup pak může paralelně vytvářet více uzlů. Tento příznak nepoužívejte, pokud jsou výsledky dotazů malé, protože by mohly zbytečně generovat mnoho malých shardů dat.
Omezení znaků
Příkaz selže, pokud dotaz vygeneruje název entity se znakem $
. Názvy entit musí být v souladu s pravidly pojmenování, takže $
znak musí být odebrán, aby příkaz ingestování proběhl úspěšně.
Například v následujícím dotazu search
operátor vygeneruje sloupec $table
. Pokud chcete uložit výsledky dotazu, přejmenujte sloupec pomocí příkazu project-rename .
.set Texas <| search State has 'Texas' | project-rename tableName=$table
Příklady
Vytvořte v databázi novou tabulku s názvem RecentErrors , která má stejné schéma jako LogsTable a obsahuje všechny chybové záznamy za poslední hodinu.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Vytvořte novou tabulku s názvem "OldExtents" v databázi, která má jediný sloupec ExtentId a obsahuje ID rozsahů všech rozsahů v databázi, která byla vytvořena před více než 30 dny. Databáze obsahuje existující tabulku s názvem MyExtents. Vzhledem k tomu, že se očekává, že datová sada bude větší než 1 GB (více než přibližně 1 milion řádků), použijte distribuovaný příznak.
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Připojte data k existující tabulce s názvem OldExtents v aktuální databázi, která má jeden sloupec ExtentId a obsahuje ID rozsahů všech rozsahů v databázi, které byly vytvořeny před více než 30 dny.
Označte nový rozsah značkami tagA
a tagB
na základě existující tabulky s názvem MyExtents.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Připojte data k tabulce OldExtents v aktuální databázi nebo vytvořte tabulku, pokud ještě neexistuje. Nový rozsah označte pomocí ingest-by:myTag
. Udělejte to jenom v případě, že tabulka ještě neobsahuje rozsah označený ingest-by:myTag
pomocí , na základě existující tabulky s názvem "MyExtents".
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Nahraďte data v tabulce OldExtents v aktuální databázi nebo vytvořte tabulku, pokud ještě neexistuje. Nový rozsah označte pomocí ingest-by:myTag
.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Připojte data k tabulce OldExtents v aktuální databázi a nastavujte čas vytvoření rozsahů na konkrétní datum a čas v minulosti.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Vrácený výstup
Vrátí informace o rozsahech vytvořených příkazem .set
nebo .append
.
Příklad výstupu
Id rozsahu | Původní velikost | Velikost rozsahu | CompressedSize | Velikost indexu | Rowcount |
---|---|---|---|---|---|
23a05ed6-376d-4119-b1fc-6493bcb05563 | 1291 | 5882 | 1568 | 4314 | 10 |
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro