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 true kan kommandot utöka schemat för tabellen. Standardvärdet är false . Det här alternativet gäller endast kommandona .append , .set-or-append och set-or-replace . Det här alternativet kräver minst behörigheter för Tabell Admin. |
recreate_schema |
bool |
Om true kan 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 true aktiveras 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 true matas 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 avextend_schema
inmatningsegenskapernarecreate_schema
har angetts tilltrue
..set-or-append
och.append
kommandon bevarar schemat om inte inmatningsegenskapenextend_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 tilltrue
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 |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för