Kusto Query Language (KQL) – Übersicht

Die Kusto-Abfragesprache (Kusto Query Language, KQL) ist ein leistungsfähiges Tool, mit dem Sie Ihre Daten untersuchen und Muster erkennen, Anomalien und Ausreißer identifizieren, statistische Modelle erstellen können und vieles mehr. KQL ist eine einfache, aber leistungsstarke Sprache zum Abfragen strukturierter, halbstrukturierter und unstrukturierter Daten. Die Sprache ist ausdrucksstark, leicht zu lesen und die Abfrageabsicht zu verstehen und für Erstellungserfahrungen optimiert. Kusto-Abfragesprache ist optimal für das Abfragen von Telemetriedaten, Metriken und Protokollen mit umfassender Unterstützung für die Textsuche und -analyse, Zeitreihenoperatoren und -funktionen, Analysen und Aggregationen, georäumliche Suchvorgänge, Vektorähnlichkeitssuchen und viele andere Sprachkonstrukte, die die optimale Sprache für die Datenanalyse bieten. Die Abfrage verwendet Schemaentitäten, die in einer Hierarchie ähnlich wie SQLs organisiert sind: Datenbanken, Tabellen und Spalten.

Dieser Artikel enthält eine Erläuterung der Abfragesprache und bietet praktische Übungen, die Ihnen den Einstieg in das Schreiben von Abfragen erleichtern. Um auf die Abfrageumgebung zuzugreifen, verwenden Sie die Azure Data Explorer-Weboberfläche. Informationen zur Verwendung von KQL finden Sie unter Tutorial: Lernen von gängigen Operatoren.

Was ist eine Kusto-Abfrage?

Eine Kusto-Abfrage ist eine schreibgeschützte Anforderung zur Verarbeitung von Daten und zur Rückgabe der Ergebnisse. Die Anforderung wird in Klartext mit einem Datenflussmodell formuliert, das leicht zu lesen, zu erstellen und zu automatisieren ist. Kusto-Abfragen werden aus einer oder mehreren Abfrageanweisungen erstellt.

Was ist eine Abfrageanweisung?

Es gibt drei Arten von Benutzerabfrageanweisungen:

Alle Abfrageanweisungen sind durch ein ; (Semikolon) getrennt und wirken sich nur auf die Abfrage aus.

Hinweis

Informationen zu Anwendungsabfrageanweisungen finden Sie unter Anwendungsabfrageanweisungen.

Die gängigste Art von Abfrage-Anweisung ist eine tabellarische Ausdrucksanweisung. Dies bedeutet, dass sowohl die Eingabe als auch die Ausgabe aus Tabellen oder tabellarischen Datasets bestehen. Tabellarische Anweisungen enthalten null oder mehr Operatoren, von denen jeder ausgehend von einer tabellarischen Eingabe eine tabellarische Ausgabe zurückgibt. Operatorsequenzen werden mit | (Pipe) gebildet. Daten werden per Pipe von einem Operator an den nächsten übergeben. Die Daten werden bei jedem Schritt gefiltert oder bearbeitet und dann in den folgenden Schritt eingespeist.

Dies ist wie ein Trichter, wobei der Ausgangspunkt eine vollständige Datentabelle ist. Jedes Mal, wenn die Daten einen anderen Operator durchlaufen, werden sie gefiltert, neu angeordnet oder zusammengefasst. Da die Weiterleitung von Informationen von einem Operator an einen anderen sequenziell erfolgt, ist die Reihenfolge des Abfrageoperators wichtig und kann sich sowohl auf ergebnisse als auch auf die Leistung auswirken. Am Ende des Trichters erhalten Sie eine optimierte Ausgabe.

Sehen wir uns eine Beispielabfrage an.

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

Hinweis

Bei KQL wird bei allem die Groß-/Kleinschreibung beachtet– Tabellennamen, Tabellenspaltennamen, Operatoren, Funktionen usw.

Diese Abfrage verfügt über eine einzelne tabellarische Ausdrucksanweisung. Die Anweisung beginnt mit einem Verweis auf eine Tabelle namens StormEvents und enthält mehrere Operatoren (where und count), die jeweils durch eine Pipe getrennt sind. Die Datenzeilen für die Quelltabelle werden zunächst nach dem Wert der Spalte StartTime und dann nach dem Wert der Spalte State gefiltert. In der letzten Zeile gibt die Abfrage eine Tabelle mit einer einzelnen Spalte und einer einzelnen Zeile zurück, die die Anzahl der verbleibenden Zeilen enthält.

Weitere Kusto-Abfragen finden Sie unter Tutorial: Schreiben von Kusto-Abfragen.

Befehle für Verwaltung

Im Gegensatz zu Kusto-Abfragen sind Verwaltungsbefehle Anforderungen an Kusto, um Daten oder Metadaten zu verarbeiten oder zu ändern. Der folgende Verwaltungsbefehl erstellt beispielsweise eine neue Kusto-Tabelle mit zwei Spalten und LevelText:

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

Verwaltungsbefehle verfügen über eine eigene Syntax, die nicht Teil der Kusto-Abfragesprache Syntax ist, obwohl die beiden mehrere Konzepte gemeinsam haben. Insbesondere werden Verwaltungsbefehle von Abfragen unterschieden, indem das erste Zeichen im Text des Befehls das Punktzeichen (.) ist (der keine Abfrage starten kann). Diese Unterscheidung verhindert viele Arten von Sicherheitsangriffen, einfach weil sie das Einbetten von Verwaltungsbefehlen in Abfragen verhindert.

Nicht alle Verwaltungsbefehle ändern Daten oder Metadaten. Eine große Klasse von Befehlen, die mit .show beginnen, dient zum Anzeigen von Metadaten oder Daten. Der Befehl .show tables gibt beispielsweise eine Liste mit allen Tabellen in der aktuellen Datenbank zurück.

Weitere Informationen zu Verwaltungsbefehlen finden Sie unter Übersicht über Verwaltungsbefehle.

KQL in anderen Diensten

KQL wird von vielen anderen Microsoft-Diensten verwendet. Spezifische Informationen zur Verwendung von KQL in diesen Umgebungen finden Sie unter den folgenden Links: