Overzicht van Kusto Query Language (KQL)

Kusto-querytaal (KQL) is een krachtig hulpprogramma om uw gegevens te verkennen en patronen te ontdekken, afwijkingen en uitbijters te identificeren, statistische modellering te maken en meer. KQL is een eenvoudige maar krachtige taal voor het uitvoeren van query's op gestructureerde, semi-gestructureerde en ongestructureerde gegevens. De taal is expressief, gemakkelijk te lezen en te begrijpen van de queryintentie en geoptimaliseerd voor ontwerpervaringen. Kusto-querytaal is optimaal voor het uitvoeren van query's op telemetrie, metrische gegevens en logboeken met uitgebreide ondersteuning voor het zoeken en parseren van tekst, tijdreeksoperatoren en -functies, analyse en aggregatie, georuimtelijke zoekopdrachten, vector overeenkomsten en vele andere taalconstructies die de meest optimale taal voor gegevensanalyse bieden. De query maakt gebruik van schema-entiteiten die zijn georganiseerd in een hiërarchie die vergelijkbaar is met SQLs: databases, tabellen en kolommen.

Dit artikel bevat een uitleg van de querytaal en praktische oefeningen om u op weg te helpen met het schrijven van query's. Gebruik de webinterface van Azure Data Explorer om toegang te krijgen tot de queryomgeving. Zie Zelfstudie: Algemene operators leren voor meer informatie over het gebruik van KQL.

Wat is een Kusto-query?

Een Kusto-query is een alleen-lezenaanvraag voor het verwerken van gegevens en het retourneren van resultaten. De aanvraag wordt vermeld in tekst zonder opmaak, met behulp van een gegevensstroommodel dat gemakkelijk te lezen, te schrijven en te automatiseren is. Kusto-query's bestaan uit een of meer query-instructies.

Wat is een query-instructie?

Er zijn drie soorten query-instructies voor gebruikers:

Alle queryinstructies worden gescheiden door een ; (puntkomma) en zijn alleen van invloed op de query die wordt uitgevoerd.

Het meest voorkomende type query-instructie is een tabellaire expressie-instructie, wat betekent dat zowel de invoer als de uitvoer bestaan uit tabellen of tabelgegevenssets. Tabellaire instructies bevatten nul of meer operatoren, die elk beginnen met een tabellaire invoer en een uitvoer in tabelvorm retourneren. Operatoren worden gesequentieerd door een | (pipe). Gegevens stromen, of worden doorgesluisd, van de ene operator naar de volgende. De gegevens worden bij elke stap gefilterd of gemanipuleerd en vervolgens in de volgende stap ingevoerd.

Het is een soort trechter, waarbij u begint met een hele gegevenstabel. Telkens wanneer de gegevens via een andere operator worden doorgegeven, worden deze gefilterd, opnieuw gerangschikt of samengevat. Omdat het doorsniëren van gegevens van de ene operator naar de andere sequentieel is, is de volgorde van de queryoperator belangrijk en kan dit van invloed zijn op zowel de resultaten als de prestaties. Aan het einde van de trechter houdt u een verfijnde uitvoer over.

Laten we eens kijken naar een voorbeeldquery.

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

Notitie

KQL is hoofdlettergevoelig voor alles: tabelnamen, tabelkolomnamen, operators, functies, enzovoort.

Deze query heeft één tabellaire expressie-instructie. De instructie begint met een verwijzing naar een tabel met de naam StormEvents en bevat verschillende operatoren, where en count, elk gescheiden door een sluis. De gegevensrijen voor de brontabel worden gefilterd op de waarde van de kolom StartTime en vervolgens gefilterd op de waarde van de kolom State . In de laatste regel retourneert de query een tabel met één kolom en één rij met het aantal resterende rijen.

Zie Zelfstudie: Kusto-query's schrijven voor meer Kusto-query's.

Opdrachten voor beheer

In tegenstelling tot Kusto-query's zijn beheeropdrachten aanvragen aan Kusto om gegevens of metagegevens te verwerken of te wijzigen. Met de volgende beheeropdracht maakt u bijvoorbeeld een nieuwe Kusto-tabel met twee kolommen, Level en Text:

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

Beheeropdrachten hebben hun eigen syntaxis, die geen deel uitmaakt van de Kusto-querytaal syntaxis, hoewel de twee veel concepten delen. Beheeropdrachten onderscheiden zich met name van query's doordat het eerste teken in de tekst van de opdracht het puntteken (.) is (waarmee een query niet kan worden gestart). Dit onderscheid voorkomt vele soorten beveiligingsaanvallen, simpelweg omdat het insluiten van beheeropdrachten in query's voorkomt.

Niet alle beheeropdrachten wijzigen gegevens of metagegevens. De grote klasse opdrachten die beginnen met .show, worden gebruikt voor het weergeven van metagegevens of gegevens. De opdracht .show tables retourneert bijvoorbeeld een lijst met alle tabellen in de huidige database.

Zie Overzicht van beheeropdrachten voor meer informatie over beheeropdrachten.

KQL in andere services

KQL wordt gebruikt door veel andere Microsoft-services. Raadpleeg de volgende koppelingen voor specifieke informatie over het gebruik van KQL in deze omgevingen: