Abfragen von Daten mithilfe von T-SQL

Der Azure Data Explorer-Abfrage-Editor unterstützt die Verwendung von T-SQL zusätzlich zur primären Abfragesprache Kusto Query Language (KQL). Während KQL die empfohlene Abfragesprache ist, kann T-SQL für Tools nützlich sein, die KQL nicht verwenden können.

Hinweis

Es werden nur DQL-Befehle (Data Query Language) unterstützt. Weitere Informationen finden Sie unter Abdeckung.

Abfragen mit T-SQL

Um eine T-SQL-Abfrage auszuführen, beginnen Sie die Abfrage mit einer leeren T-SQL-Kommentarzeile: --. Die -- Syntax weist den Abfrage-Editor an, die folgende Abfrage als T-SQL und nicht als KQL zu interpretieren.

Beispiel

--
SELECT * FROM StormEvents

T-SQL zu Kusto-Abfragesprache

Der Abfrage-Editor unterstützt die Möglichkeit, T-SQL-Abfragen in KQL zu übersetzen. Dieses Übersetzungsfeature kann für Benutzer hilfreich sein, die mit SQL vertraut sind und mehr über KQL erfahren möchten.

Um die entsprechende KQL für eine T-SQL-Anweisung SELECT abzurufen, fügen Sie vor der Abfrage die Schlüsselwort (keyword) explain hinzu. Die Ausgabe ist die KQL-Version der Abfrage, die hilfreich sein kann, um die entsprechende KQL-Syntax und -Konzepte zu verstehen.

Denken Sie daran, T-SQL-Abfragen mit einer T-SQL-Kommentarzeile ( ) voran zu führen, --um den Abfrage-Editor anweisen, die folgende Abfrage als T-SQL und nicht als KQL zu interpretieren.

Beispiel

--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC

Ausgabe

StormEvents
| project
    StartTime,
    EndTime,
    EpisodeId,
    EventId,
    State,
    EventType,
    InjuriesDirect,
    InjuriesIndirect,
    DeathsDirect,
    DeathsIndirect,
    DamageProperty,
    DamageCrops,
    Source,
    BeginLocation,
    EndLocation,
    BeginLat,
    BeginLon,
    EndLat,
    EndLon,
    EpisodeNarrative,
    EventNarrative,
    StormSummary
| sort by DamageProperty desc nulls first
| take int(10)

Ausführen gespeicherter Funktionen

Bei verwendung von T-SQL wird empfohlen, optimierte KQL-Abfragen zu erstellen und in gespeicherten Funktionen zu kapseln, da dies T-SQL-Code minimiert und die Leistung möglicherweise erhöht. Wenn Sie beispielsweise über eine gespeicherte Funktion verfügen, wie in der folgenden Tabelle beschrieben, können Sie sie wie im Codebeispiel gezeigt ausführen.

Name Parameter Text Ordner DocString
Myfunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demofunktion mit Parameter
SELECT * FROM kusto.MyFunction(10)

Hinweis

Um zwischen gespeicherten Funktionen und emulierten gespeicherten SQL-Systemprozeduren zu unterscheiden, führen Sie gespeicherte Funktionen mit einem expliziten Verweis auf das kusto Schema aus. Im Beispiel wird die gespeicherte Funktion mit kusto.Myfunctionausgeführt.

Festlegen von Anforderungseigenschaften

Anforderungseigenschaften steuern, wie eine Abfrage ausgeführt wird und Ergebnisse zurückgibt. Um Anforderungseigenschaften mit T-SQL festzulegen, stellen Sie Ihrer Abfrage eine oder mehrere Anweisungen mit der folgenden Syntax voran:

Syntax

DECLARE@__kql_set_RequestPropertyName-Typwert=;

Parameter

Name Typ Erforderlich BESCHREIBUNG
requestPropertyName string ✔️ Der Name der festzulegenden Anforderungseigenschaft .
type string ✔️ Der T-SQL-Datentyp des Werts.
value Skalar ✔️ Der Wert, der der Anforderungseigenschaft zugewiesen werden soll.

Hinweis

  • Zwei Anweisungen müssen durch ein Semikolon getrennt werden, und es sollte keine leere Zeile vor der Abfrage sein.
  • Anforderungseigenschaften gelten nur für die anweisungen des tabellarischen Ausdrucks , die unmittelbar folgen.

Beispiele

Die folgende Tabelle enthält Beispiele zum Festlegen von Anforderungseigenschaften mit T-SQL.

Request-Eigenschaft Beispiel
query_datetimescope_to DECLARE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DECLARE @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age DECLARE @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DECLARE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DECLARE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DECLARE @__kql_set_notruncation BIT = 1;
norequesttimeout DECLARE @__kql_set_norequesttimeout BIT = 0;

Informationen zum Festlegen von Anforderungseigenschaften mit KQL finden Sie unter set-Anweisung.

Abdeckung

Azure Data Explorer bietet eingeschränkte Unterstützung für T-SQL. In der folgenden Tabelle werden die T-SQL-Anweisungen und -Features beschrieben, die nicht oder teilweise unterstützt werden.

T-SQL-Anweisung oder -Funktion BESCHREIBUNG
CREATE, INSERT, DROP und ALTER Nicht unterstützt
Schema- oder Datenänderungen Nicht unterstützt
ANY, ALL und EXISTS Nicht unterstützt
WITHIN GROUP Nicht unterstützt
TOP PERCENT Nicht unterstützt
TOP WITH TIES Wird als normal ausgewertet TOP
TRUNCATE Gibt den nächsten Wert zurück.
SELECT * Die Spaltenreihenfolge kann von der Erwartung abweichen. Verwenden Sie Spaltennamen, wenn die Reihenfolge wichtig ist.
AT TIME ZONE Nicht unterstützt
SQL-Cursor Nicht unterstützt
Correlated subqueries (Korrelierte Unterabfragen) Nicht unterstützt
Rekursive CTEs Nicht unterstützt
Dynamische Anweisungen Nicht unterstützt
Flusssteuerungsanweisungen Nur IFTHENELSE Anweisungen mit einem identischen Schema für THEN und ELSE werden unterstützt.
Doppelte Spaltennamen Wird nicht unterstützt. Der ursprüngliche Name wird für eine Spalte beibehalten.
Datentypen Die zurückgegebenen Daten können sich vom Typ SQL Server unterscheiden. Beispielsweise TINYINT haben und SMALLINT keine Entsprechung in Azure Data Explorer und können als INT32 oder INT64 anstelle von BYTE oder INT16zurückgeben.