Mata in från fråga (.set, .append, .set-or-append, .set-or-replace)

Dessa kommandon kör en fråga eller ett hanteringskommando och matar in resultatet av frågan i en tabell. Skillnaden mellan dessa kommandon är hur de hanterar befintliga eller obefintliga tabeller och data.

Kommando Om tabellen finns Om tabellen inte finns
.set Kommandot misslyckas Tabellen skapas och data matas in
.append Data läggs till i tabellen Kommandot misslyckas
.set-or-append Data läggs till i tabellen Tabellen skapas och data matas in
.set-or-replace Data ersätter data i tabellen Tabellen skapas och data matas in

Information om hur du avbryter en inmatning från frågekommandot finns i cancel operation.

Anteckning

Den här inmatningsmetoden är avsedd för utforskning och prototyper. Använd den inte i produktions- eller högvolymscenarier.

Behörigheter

Om du vill utföra olika åtgärder i en tabell krävs specifika behörigheter:

  • Om du vill lägga till rader i en befintlig tabell med kommandot .append behöver du minst tabell-Ingestor-behörigheter.
  • Om du vill skapa en ny tabell med hjälp av de olika .set kommandona behöver du ett minimum av behörigheter för databasanvändare.
  • Om du vill ersätta rader i en befintlig tabell med kommandot .set-or-replace behöver du minst Admin behörigheter.

Mer information om behörigheter finns i Kusto rollbaserad åtkomstkontroll.

Syntax

(.set | .append.set-or-replace | | .set-or-append) [async] tableName [with(propertyName= propertyValue [, ...]] <|)queryOrCommand

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
Asynkrona string Om kommandot anges returneras och fortsätter inmatningen i bakgrunden. Använd som returneras OperationId med .show operations kommandot för att hämta slutförandestatus för inmatning och resultat.
Tablename string ✔️ Namnet på tabellen som data ska matas in i. TableName är alltid relaterat till databasen i kontexten.
propertyName, propertyValue string En eller flera inmatningsegenskaper som stöds för att styra inmatningsprocessen.
queryOrCommand string ✔️ Texten i en fråga eller ett hanteringskommando vars resultat används som data för att mata in.

Anteckning

Endast .show hanteringskommandon stöds.

Inmatningsegenskaper som stöds

Egenskap Typ Description
creationTime string Datetime-värdet, formaterat som en ISO8601 sträng, som ska användas vid skapandet av inmatade dataomfång. Om det är ospecificerat now() används. När den Lookback har angetts kontrollerar du att egenskapen i måltabellens gällande sammanslagningsprincip för utrymmen är justerad mot det angivna värdet.
extend_schema bool Om truekan kommandot utöka schemat för tabellen. Standardvärdet är false. Det här alternativet gäller endast kommandona .append, .set-or-appendoch set-or-replace . Det här alternativet kräver minst behörigheter för Tabell Admin.
recreate_schema bool Om truekan kommandot återskapa schemat för tabellen. Standardvärdet är false. Det här alternativet gäller endast för .set-or-replace kommandot . Det här alternativet har företräde framför egenskapen extend_schema om båda har angetts. Det här alternativet kräver minst behörigheter för Tabell Admin.
folder string Mappen som ska tilldelas till tabellen. Om tabellen redan finns skriver den här egenskapen över tabellens mapp.
ingestIfNotExists string Om detta anges misslyckas inmatningen om tabellen redan har data taggade med en ingest-by: tagg med samma värde. Mer information finns i mata in av: taggar.
policy_ingestiontime bool Om trueaktiveras inmatningstidsprincipen i tabellen. Standardvärdet är true.
tags string En JSON-sträng som representerar en lista över taggar som ska associeras med den skapade omfattningen.
docstring string En beskrivning som används för att dokumentera tabellen.
distributed bool Om truematas kommandot in från alla noder som kör frågan parallellt. Standardvärdet är false. Se prestandatips.
persistDetails Ett booleskt värde som, om det anges, anger att kommandot ska spara detaljerade resultat för hämtning av kommandot .show operation details . Standardvärdet är false. with (persistDetails=true)

Schemaöverväganden

  • .set-or-replace bevarar schemat om inte någon av extend_schema inmatningsegenskaperna recreate_schema har angetts till true.
  • .set-or-append och .append kommandon bevarar schemat om inte inmatningsegenskapen extend_schema är inställd på true.
  • Matchning av resultatuppsättningsschemat med måltabellen baseras på kolumntyperna. Det finns ingen matchning av kolumnnamn. Kontrollera att kolumnerna för frågeresultatschemat är i samma ordning som tabellen, annars matas data in i fel kolumner.

Varning

Om schemat ändras sker det i en separat transaktion före den faktiska datainmatningen. Det innebär att schemat kan ändras även om det inte går att mata in data.

Prestandatips

  • Datainmatning är en resursintensiv åtgärd som kan påverka samtidiga aktiviteter i klustret, inklusive frågor som körs. Undvik att köra för många inmatningskommandon samtidigt.
  • Begränsa data för inmatning till mindre än 1 GB per inmatningsåtgärd. Använd vid behov flera inmatningskommandon.
  • distributed Ange flaggan till true om mängden data som skapas av frågan är stor, överskrider 1 GB och inte kräver serialisering. Sedan kan flera noder generera utdata parallellt. Använd inte den här flaggan när frågeresultatet är litet, eftersom det i onödan kan generera många små datashards.

Teckenbegränsning

Kommandot misslyckas om frågan genererar ett entitetsnamn med $ tecknet . Entitetsnamnen måste följa namngivningsreglerna, så $ tecknet måste tas bort för att inmatningskommandot ska lyckas.

I följande fråga genererar operatorn search till exempel en kolumn $table. Om du vill lagra frågeresultaten använder du project-rename för att byta namn på kolumnen.

.set Texas <| search State has 'Texas' | project-rename tableName=$table

Exempel

Skapa en ny tabell med namnet RecentErrors i databasen som har samma schema som LogsTable och som innehåller alla felposter under den senaste timmen.

.set RecentErrors <|
   LogsTable
   | where Level == "Error" and Timestamp > now() - time(1h)

Skapa en ny tabell med namnet "OldExtents" i databasen som har en enda kolumn, "ExtentId", och innehåller utrymmes-ID:n för alla utrymmen i databasen som har skapats mer än 30 dagar tidigare. Databasen har en befintlig tabell med namnet "MyExtents". Eftersom datauppsättningen förväntas vara större än 1 GB (mer än ~1 miljon rader) använder du den distribuerade flaggan

.set async OldExtents with(distributed=true) <|
   MyExtents 
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Lägg till data i en befintlig tabell med namnet "OldExtents" i den aktuella databasen som har en enda kolumn, "ExtentId", och innehåller utrymmes-ID:n för alla utrymmen i databasen som har skapats mer än 30 dagar tidigare. Markera den nya omfattningen med taggar tagA och tagB, baserat på en befintlig tabell med namnet "MyExtents".

.append OldExtents with(tags='["TagA","TagB"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Lägg till data i tabellen "OldExtents" i den aktuella databasen eller skapa tabellen om den inte redan finns. Tagga den nya omfattningen med ingest-by:myTag. Gör det bara om tabellen inte redan innehåller ett utrymme som är taggat med ingest-by:myTag, baserat på en befintlig tabell med namnet "MyExtents".

.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
   MyExtents
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Ersätt data i tabellen "OldExtents" i den aktuella databasen eller skapa tabellen om den inte redan finns. Tagga den nya omfattningen med ingest-by:myTag.

.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Lägg till data i tabellen "OldExtents" i den aktuella databasen, samtidigt som du anger den eller de skapade utrymmenas skapandetid till en viss datetime tidigare.

.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId     

Returnera utdata

Returnerar information om de utrymmen som skapats på grund av .set kommandot eller .append .

Exempel på utdata

ExtentId OriginalSize ExtentSize CompressedSize IndexSize RowCount
23a05ed6-376d-4119-b1fc-6493bcb05563 1291 5882 1568 4314 10