Översikt över Kusto Query Language (KQL)
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Kusto Query Language (KQL) är ett kraftfullt verktyg för att utforska dina 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 redigeringsupplevelser. Kusto Query Language ä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 erbjuder 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 Azure Data Explorer. Mer information om hur du använder KQL finns i Självstudie: Lär dig vanliga operatorer.
Den här artikeln innehåller en förklaring av frågespråket och erbjuder praktiska övningar för att komma igång med att skriva frågor. Om du vill komma åt frågemiljön använder du KQL-frågeuppsättningen. Mer 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 begäran 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 görs av en eller flera frågeinstruktioner.
Vad är en frågeuttryck?
Det finns tre typer av frågeuttryck:
Alla frågeinstruktioner avgränsas med en ;
(semikolon) och påverkar bara frågan.
Not
Information om programfrågeuttryck finns i Programfrågeuttryck.
Den vanligaste typen av frågeuttryck är ett tabelluttryck -instruktionen, vilket innebär att både indata och utdata består av tabeller eller tabelldatauppsättningar. Tabellinstruktioner innehåller noll eller fler operatorer, som var och en börjar med tabellindata och returnerar tabellutdata. Operatorer sekvenseras av en |
(rör). Dataflöden, eller skickas, från en operator till en annan. Data filtreras eller manipuleras i varje steg och matas sedan in i 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 rördragningen av information från en operator till en annan är sekventiell är frågeoperatorordningen viktig och kan påverka både resultat och prestanda. I slutet av tratten har du en förfinad 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
Räkna |
---|
28 |
Not
KQL är skiftlägeskänsligt för allt – tabellnamn, tabellkolumnnamn, operatorer, funktioner och så vidare.
Nyckelord kan användas som identifierare genom att omsluta dem inom hakparenteser och citattecken (['
och ']
eller ["
och "]
). Till exempel ['where']
. Mer information finns i namngivningsregler för identifierare
Den här frågan har ett enda tabelluttryck. -instruktionen börjar med en referens till en tabell med namnet StormEvents och innehåller flera operatorer, where
och count
, var och en avgränsad 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 enda 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.
Hanteringskommandon
Till skillnad från Kusto-frågor är Management-kommandon 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, Level
och Text
:
.create table Logs (Level:string, Text:string)
Hanteringskommandon har en egen syntax, som inte ingår i Syntaxen för Kusto Query Language, även om de två delar 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 klassen med kommandon som börjar med .show
används för att visa metadata eller data. Kommandot .show tables
returnerar till exempel en lista över alla tabeller i den aktuella databasen.
Mer information om hanteringskommandon finns i översikten över Management-kommandon.
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 i följande länkar:
- Loggfrågor i Azure Monitor
- Kusto Query Language i Microsoft Sentinel
- Förstå Azure Resource Graph-frågespråket
- proaktivt jaga efter hot med avancerad jakt i Microsoft 365 Defender
- CMPivot-frågor