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. |
Zugehöriger Inhalt
- Informationen zur SQL Server-Emulation im Azure Data Explorer
- Verwenden des SQL in Kusto Query Language-Spickzettels