Översikt över Kusto Query Language (KQL)

Kusto-frågespråk (KQL) är ett kraftfullt verktyg för att utforska data och identifiera mönster, identifiera avvikelser och extremvärden, skapa statistisk modellering med mera. KQL är ett enkelt men kraftfullt språk för att fråga strukturerade, halvstrukturerade och ostrukturerade data. Språket är uttrycksfullt, lättläst och förstår frågesyftet och optimerat för redigering. Kusto-frågespråk är optimalt för att fråga telemetri, mått och loggar med djupt stöd för textsökning och parsning, tidsserieoperatorer och funktioner, analys och aggregering, geospatiala sökningar, vektorlikhetssökningar och många andra språkkonstruktioner som ger det mest optimala språket för dataanalys. Frågan använder schemaentiteter som är ordnade i en hierarki som liknar SQL:er: databaser, tabeller och kolumner.

Den här artikeln innehåller en förklaring av frågespråket och innehåller praktiska övningar för att komma igång med att skriva frågor. Om du vill komma åt frågemiljön använder du webbgränssnittet för Azure Data Explorer. Information om hur du använder KQL finns i Självstudie: Lär dig vanliga operatorer.

Vad är en Kusto-fråga?

En Kusto-fråga är en skrivskyddad förfrågan om att bearbeta data och returnera resultat. Begäran anges i oformaterad text med hjälp av en dataflödesmodell som är lätt att läsa, redigera och automatisera. Kusto-frågor består av en eller flera frågeinstruktioner.

Vad är en frågeuttryck?

Det finns tre typer av användarfrågeuttryck:

Alla frågeinstruktioner avgränsas med ett ; (semikolon) och påverkar bara den aktuella frågan.

Anteckning

Information om programfrågeuttryck finns i Programfrågeuttryck.

Den vanligaste typen av frågeuttryck är ett tabelluttryck, vilket innebär att både indata och utdata består av tabeller eller tabelldatauppsättningar. Tabellinstruktioner innehåller noll eller flera operatorer, som vart och ett börjar med tabellindata och returnerar tabellutdata. Operatorer sekvenseras med ett | (rör). Data flödar eller skickas i en pipe från en operator till nästa. Data filtreras eller manipuleras i varje steg och matas sedan vidare till följande steg.

Det är som en tratt, där du börjar med en hel datatabell. Varje gång data passerar genom en annan operator filtreras de, ordnas om eller sammanfattas. Eftersom det är sekventiellt att skicka information från en operator till en annan är frågeoperatorordningen viktig och kan påverka både resultat och prestanda. I slutet av tratten har du förfinade utdata.

Nu ska vi titta på en exempelfråga.

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 
Antal
28

Anteckning

KQL är skiftlägeskänsligt för allt – tabellnamn, tabellkolumnnamn, operatorer, funktioner och så vidare.

Den här frågan har en enda tabelluttrycksinstrukator. -instruktionen börjar med en referens till en tabell med namnet StormEvents och innehåller flera operatorer, where och , som var och counten avgränsas med ett rör. Dataraderna för källtabellen filtreras efter värdet för kolumnen StartTime och filtreras sedan efter värdet för kolumnen State . På den sista raden returnerar frågan en tabell med en enda kolumn och en enskild rad som innehåller antalet återstående rader.

Om du vill prova några fler Kusto-frågor kan du läsa Självstudie: Skriva Kusto-frågor.

Kommandon för hantering

Till skillnad från Kusto-frågor är hanteringskommandon begäranden till Kusto om att bearbeta eller ändra data eller metadata. Följande hanteringskommando skapar till exempel en ny Kusto-tabell med två kolumner och LevelText:

.create table Logs (Level:string, Text:string)

Hanteringskommandon har sin egen syntax, som inte ingår i Kusto-frågespråk syntax, även om de två har många begrepp. I synnerhet skiljer sig hanteringskommandon från frågor genom att det första tecknet i kommandots text är punkttecknet () (.som inte kan starta en fråga). Den här skillnaden förhindrar många typer av säkerhetsattacker, bara för att den förhindrar inbäddning av hanteringskommandon i frågor.

Alla hanteringskommandon ändrar inte data eller metadata. Den stora kommandoklassen som börjar med .show används för att visa metadata eller data. Till exempel returnerar kommandot .show tables en lista över alla tabeller i den aktuella databasen.

Mer information om hanteringskommandon finns i Översikt över hanteringskommandon.

KQL i andra tjänster

KQL används av många andra Microsoft-tjänster. Specifik information om användningen av KQL i dessa miljöer finns på följande länkar: