Översikt av hantering (kontrollkommandon)
I det här avsnittet beskrivs de kontrollkommandon som används för att hantera Kusto. Kontrollkommandon är begäranden till tjänsten för att hämta information som inte nödvändigtvis är data i databastabellerna, eller för att ändra tjänstens tillstånd och så vidare.
Särskilja kontrollkommandon från frågor
Kusto använder tre mekanismer för att särskilja frågor från kontrollkommandon: på språknivå, protokollnivå och API-nivå. Detta görs av säkerhetsskäl.
På språknivå avgör det första tecknet i begärandetexten om begäran är ett kontrollkommando eller en fråga. Kontrollkommandon måste börja med punkttecknet (.), och ingen fråga får börja med det tecknet.
På protokollnivå används olika HTTP/HTTPS-slutpunkter för kontrollkommandon i stället för frågor.
På API-nivå används olika funktioner för att skicka kontrollkommandon i stället för frågor.
Kombinera frågor och kontrollkommandon
Kontrollkommandon kan referera till frågor (men inte vice versa) eller andra kontrollkommandon. Det finns flera scenarier som stöds:
- AdminThenQuery: Ett kontrollkommando körs och dess resultat (representeras som en temporär datatabell) används som indata till en fråga.
- AdminFromQuery:Antingen körs en fråga eller ett administratörskommando och dess resultat (representeras som en temporär datatabell) fungerar som indata för ett kontrollkommando.
Observera att hela kombinationen tekniskt sett alltid är ett kontrollkommando, inte en fråga. Därför måste texten i begäran börja med ett punkttecken (.), och begäran måste skickas till tjänstens hanteringsslutpunkt.
Observera även att frågeuttryck visas i textens frågedel (de kan inte komma före själva kommandot).
Anteckning
Kör inte [command-then-query]-åtgärder för ofta. command-then-query utför piping på resultatuppsättningen av kontrollkommandot och tillämpar filter/sammansättningar på den.
- Exempel:
.show ... | where ... | summarize ... - När du kör något som liknar:
.show cluster extents | count(med betoning på| count) förbereder Kusto först en datatabell som innehåller all information om alla utrymmen i klustret. Systemet skickar sedan den minnesexklusiva tabellen till Kusto-motorn för att utföra beräkningen. Systemet arbetar faktiskt hårt i en icke-optimerad väg för att ge dig ett sådant trivialt svar.
AdminThenQuery anges på ett av två sätt:
- Med hjälp av ett vertikalstreck (
|). I det fallet behandlar frågan resultatet av kontrollkommandot som om för vilken annan dataproducerande frågeoperator som helst. - Med hjälp av ett semikolon (
;). I det fallet introduceras resultatet av kontrollkommandot till ett specialtecken som kallas$command_resultsoch som därefter kan användas i frågan hur många gånger som helst.
Ett exempel:
// 1. Using pipe: Count how many tables are in the database-in-scope:
.show tables
| count
// 2. Using semicolon: Count how many tables are in the database-in-scope:
.show tables;
$command_results
| count
// 3. Using semicolon, and including a let statement:
.show tables;
let useless=(n:string){strcat(n,'-','useless')};
$command_results | extend LastColumn=useless(TableName)
AdminFromQuery anges med teckenkombinationen. I följande exempel kör vi först en fråga som skapar en tabell med en enskild kolumn (med namnet str och typen string) samt en enskild rad och skriver den som tabellnamnet MyTable i databasen i kontext:
.set MyTable <|
let text="Hello, World!";
print str=text