Freigeben über


Abfragen von Daten mit T-SQL

Der Azure Data Explorer-Abfrageeditor unterstützt die Verwendung von T-SQL zusätzlich zur primären Abfragesprache Kusto-Abfragesprache (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 Abfrageeditor an, die folgende Abfrage als T-SQL und nicht als KQL zu interpretieren.

Beispiel

--
SELECT * FROM StormEvents

T-SQL in Kusto Query Language

Der Abfrageeditor 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-SELECT-Anweisung abzurufen, fügen Sie das Schlüsselwort explain vor der Abfrage 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 der T-SQL-Kommentarzeile -- einzuführen, um dem Abfrageeditor mitzuteilen, die folgende Abfrage als T-SQL und nicht als KQL zu interpretieren.

Beispiel

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

Output

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 sie in gespeicherten Funktionen zu kapseln, da dadurch T-SQL-Code minimiert und die Leistung erhöht werden kann. Wenn Sie beispielsweise eine gespeicherte Funktion, wie in der folgenden Tabelle beschrieben, haben, können Sie sie wie im Codebeispiel gezeigt ausführen.

Name Parameter Text Ordner DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo-Funktion 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 mithilfe von kusto.Myfunction ausgeführt.

Festlegen von Anforderungseigenschaften

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

Syntax

DECLARE @__kql_set_requestPropertyName type = value;

Parameter

Name Type Erforderlich Beschreibung
requestPropertyName string ✔️ Der Name der festzulegenden Anforderungseigenschaft.
type string ✔️ Der T-SQL-Datentyp des Werts.
value Skalarwert ✔️ Der Wert, welcher der Anforderungseigenschaft zugewiesen werden soll.

Hinweis

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

Beispiele

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

Anforderungseigenschaft 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.

Coverage

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 unterstützt 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 Als normale TOP ausgewertet
TRUNCATE Gibt den nächsten Wert zurück
SELECT * Die Spaltenreihenfolge unterscheidet sich möglicherweise von der Erwartung. 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 IF THEN ELSE Anweisungen mit einem identischen Schema für THEN und ELSE werden unterstützt.
Doppelte Spaltennamen Nicht unterstützt. Der ursprüngliche Name wird für eine Spalte beibehalten.
Datentypen Die zurückgegebenen Daten unterscheiden sich möglicherweise vom Typ SQL Server. Beispielsweise haben TINYINT und SMALLINT keine Entsprechung im Azure Data Explorer und können als INT32 oder INT64 anstelle von BYTE oder INT16 zurückgegeben werden.