Typer av KQL-frågor
Du har lärt dig mer om strukturen för en KQL-fråga i föregående lektion. Nu ska vi gå djupare in på de olika delarna och typerna av KQL-frågor.
Den här lektionen ger en översikt över frågeinstruktioner och funktioner. I KQL består alla frågor av en eller flera frågeinstruktioner. Dessa instruktioner påverkar bara den specifika fråga där de används, såvida de inte uttryckligen lagras för framtida användning. De vanligaste typerna av frågeuttryck är tabelluttrycksinstruktioner och let-instruktioner. Förutom det omfattande biblioteket med inbyggda funktioner tillåter KQL användardefinierade funktioner som antingen kan lagras eller definieras för användning i en enda fråga.
Tabellbaserade uttrycksinstruktioner
De flesta frågor använder minst en tabelluttrycksinstruktor, vilket innebär att både indata och utdata består av tabeller eller tabelldatauppsättningar. Dessa instruktioner innehåller vanligtvis operatorer, som var och en börjar med en tabellinmatning och returnerar ett tabellutdata.
Det finns ett brett utbud av operatorer som tillhandahålls av KQL, allt från enkla operatorer (till exempel count
, sort
och where
) till mer komplexa (till exempel parse
, join
och render
).
Följande fråga innehåller till exempel fyra tabelluttrycksinstruktioner:
StormEvents // tabular expression statement 1
| where EventType == "Flood" // tabular expression statement 2
| sort by DamageProperty asc // tabular expression statement 3
| take 10 // tabular expression statement 4
Let-instruktioner
En let
instruktion definierar en bindning mellan ett namn och ett uttryck. Du kan använda let-instruktioner för att dela upp en lång fråga i små namngivna delar som är lättare att förstå.
Vi använde till exempel uttrycken let
i följande fråga för att definiera skalära värden:
let n = 10; // number
let place = "VIRGINIA"; // string
let cutoff = ago(12345d); // datetime
StormEvents
| where StartTime > cutoff and State == place
| take n
Inbyggda funktioner
Inbyggda funktioner är hårdkodade funktioner som definieras av KQL och som inte kan ändras. KQL har ett omfattande bibliotek med funktioner som är tillgängliga för användning, som du hittar i den officiella KQL-dokumentationen. Funktionerna sträcker sig från enkel sortering och matchning till komplexa statistiska och geospatiala funktioner.
Följande funktion sammanfogar till exempel strcat()
strängargument:
print str = strcat("hello", " ", "world")
Användardefinierade funktioner
Användardefinierade funktioner definieras, som namnet antyder, av användaren. Vi kan dela upp användardefinierade funktioner i två typer:
Lagrade funktioner: Användardefinierade funktioner som är lagrade och hanterade databasschemaentiteter, liknande tabeller. Olika produkter använder olika sätt att lagra funktioner.
Följande fråga i Azure Data Explorer lagrar till exempel en funktion som tar en parameter:
.create function with (docstring = 'Demo function with parameter', folder='Demo') MyFunction2(myLimit: long) {StormEvents | take myLimit}
I andra miljöer, till exempel Azure Monitor och Microsoft Sentinel, kan du spara frågor via användargränssnittet.
Frågedefinierade funktioner: Användardefinierade funktioner som definieras och används inom omfånget för en enskild fråga. Definitionen av sådana funktioner sker via en let-instruktion.
Följande fråga definierar till exempel och använder sedan funktionen f:
let f=(a: string, b: string) { strcat(a, " (la la la) ", b) }; print f("hello", "world")