Typen KQL-query's

Voltooid

U hebt geleerd over de structuur van een KQL-query in de vorige les. Laten we nu dieper ingaan op de verschillende onderdelen en typen KQL-query's.

Deze les biedt een overzicht van query-instructies en -functies. In KQL bestaan alle query's uit een of meer queryinstructies. Deze instructies zijn alleen van invloed op de specifieke query waarin ze worden gebruikt, tenzij deze expliciet zijn opgeslagen voor toekomstig gebruik. De meest voorkomende typen query-instructies zijn tabellaire expressie-instructies en let-instructies. Naast de uitgebreide bibliotheek met ingebouwde functies maakt KQL het mogelijk om door de gebruiker gedefinieerde functies op te slaan of te definiëren voor gebruik in één query.

Tabellaire expressie-instructies

De meeste query's gebruiken ten minste één instructie voor tabellaire expressies, wat betekent dat zowel de invoer als uitvoer bestaan uit tabellen of gegevenssets in tabelvorm. Deze instructies bevatten meestal operators, die elk beginnen met een tabellaire invoer en een uitvoer in tabelvorm retourneren.

Er is een breed scala aan operators van KQL, variërend van eenvoudige operators (zoals count, sorten where) tot complexere operators (zoals parsejoin, en ).render

De volgende query bevat bijvoorbeeld vier expressie-instructies in tabelvorm:

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-instructies

Een let instructie definieert een binding tussen een naam en een expressie. U kunt let-instructies gebruiken om een lange query op te splitsen in kleine benoemde onderdelen die gemakkelijker te begrijpen zijn.

We hebben bijvoorbeeld de let instructies in de volgende query gebruikt om scalaire waarden te definiëren:

let n = 10;  // number
let place = "VIRGINIA";  // string
let cutoff = ago(12345d); // datetime 
StormEvents 
| where StartTime > cutoff and State == place 
| take n

Ingebouwde functies

Ingebouwde functies zijn in code vastgelegde functies die zijn gedefinieerd door KQL die niet kunnen worden gewijzigd. KQL heeft een uitgebreide bibliotheek met functies die beschikbaar zijn voor gebruik, die u kunt vinden in de officiële KQL-documentatie. De functies variëren van eenvoudige sortering en afstemming op complexe statistische en georuimtelijke functies.

Met de volgende strcat() functie worden bijvoorbeeld tekenreeksargumenten samengevoegd:

print str = strcat("hello", " ", "world")

Door de gebruiker gedefinieerde functies

Door de gebruiker gedefinieerde functies worden, zoals hun naam al aangeeft, gedefinieerd door de gebruiker. We kunnen door de gebruiker gedefinieerde functies in twee typen verdelen:

  • Opgeslagen functies: door de gebruiker gedefinieerde functies die zijn opgeslagen en beheerde databaseschema-entiteiten, vergelijkbaar met tabellen. Verschillende producten gebruiken verschillende manieren om functies op te slaan.

    Met de volgende query in Azure Data Explorer wordt bijvoorbeeld een functie opgeslagen die een parameter gebruikt:

    .create function
    with (docstring = 'Demo function with parameter', folder='Demo')
     MyFunction2(myLimit: long)  {StormEvents | take myLimit}
    

    In andere omgevingen, zoals Azure Monitor en Microsoft Sentinel, kunt u query's opslaan via de gebruikersinterface.

  • Door query's gedefinieerde functies: door de gebruiker gedefinieerde functies die binnen het bereik van één query worden gedefinieerd en gebruikt. De definitie van dergelijke functies wordt uitgevoerd via een let-instructie.

    Met de volgende query wordt bijvoorbeeld de functie f gedefinieerd en gebruikt:

    let f=(a: string, b: string) {
        strcat(a, " (la la la) ", b)
    };
    print f("hello", "world")