Fråga efter data med T-SQL
Azure Data Explorer-frågeredigeraren stöder användning av T-SQL utöver det primära frågespråket Kusto query language (KQL). KQL är det rekommenderade frågespråket, men T-SQL kan vara användbart för verktyg som inte kan använda KQL.
Anteckning
Endast DQL-kommandon (Data Query Language) stöds. Mer information finns i Täckning.
Om du vill köra en T-SQL-fråga börjar du frågan med en tom T-SQL-kommentarsrad: --
. Syntaxen --
instruerar frågeredigeraren att tolka följande fråga som T-SQL och inte KQL.
--
SELECT * FROM StormEvents
Frågeredigeraren stöder möjligheten att översätta T-SQL-frågor till KQL. Den här översättningsfunktionen kan vara till hjälp för användare som är bekanta med SQL och vill veta mer om KQL.
Om du vill hämta motsvarande KQL för en T-SQL-instruktion SELECT
lägger du till nyckelordet explain
före frågan. Utdata är KQL-versionen av frågan, vilket kan vara användbart för att förstå motsvarande KQL-syntax och begrepp.
Kom ihåg att förorda T-SQL-frågor med en T-SQL-kommentarsrad för --
att be frågeredigeraren att tolka följande fråga som T-SQL och inte KQL.
--
explain
SELECT top(10) *
FROM StormEvents
ORDER BY DamageProperty DESC
Resultat
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)
När du använder T-SQL rekommenderar vi att du skapar optimerade KQL-frågor och kapslar in dem i lagrade funktioner, eftersom detta minimerar T-SQL-kod och kan öka prestanda. Om du till exempel har en lagrad funktion enligt beskrivningen i följande tabell kan du köra den enligt kodexemplet.
Name | Parametrar | Brödtext | Mapp | DocString |
---|---|---|---|---|
MyFunction | (myLimit: long) | {StormEvents | take myLimit} | MyFolder | Demofunktion med parameter |
SELECT * FROM kusto.MyFunction(10)
Anteckning
Om du vill skilja mellan lagrade funktioner och emulerade lagrade SQL-systemprocedurer kör du lagrade funktioner med en explicit referens till kusto
schemat. I exemplet körs den lagrade funktionen med .kusto.Myfunction
Egenskaper för begäran styr hur en fråga körs och returnerar resultat. Om du vill ange egenskaper för begäran med T-SQL, förordar du frågan med en eller flera instruktioner med följande syntax:
DECLARE
@__kql_set_
requestPropertyName-typvärde=
;
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
requestPropertyName | string |
✔️ | Namnet på den begärandeegenskap som ska anges. |
Typ | string |
✔️ | Värdets T-SQL-datatyp. |
värde | Skalär | ✔️ | Värdet som ska tilldelas till begärandeegenskapen. |
Anteckning
- Två instruktioner måste avgränsas med ett semikolon och det bör inte finnas någon tom rad före frågan.
- Egenskaper för begäran gäller endast för de tabelluttrycksinstruktioner som följer omedelbart.
I följande tabell visas exempel på hur du ställer in begärandeegenskaper med T-SQL.
Begär egenskap | Exempel |
---|---|
query_datetimescope_to |
DEKLARERA @__kql_set_query_datetimescope_to DATETIME = "2023-03-31 03:02:01"; |
request_app_name |
DEKLARERA @__kql_set_request_app_name NVARCHAR = "kuku"; |
query_results_cache_max_age |
DEKLARERA @__kql_set_query_results_cache_max_age TIME = '00:05:00'; |
truncationmaxsize |
DEKLARERA @__kql_set_truncationmaxsize BIGINT = 4294967297; |
maxoutputcolumns |
DEKLARERA @__kql_set_maxoutputcolumns INT = 3001; |
notruncation |
DEKLARERA @__KQL_SET_NOTRUNCATION BIT = 1; |
norequesttimeout |
DEKLARERA @__KQL_SET_NOREQUESTTIMEOUT BIT = 0; |
Information om hur du anger egenskaper för begäran med KQL finns i set-instruktionen.
Azure Data Explorer erbjuder begränsat stöd för T-SQL. I följande tabell beskrivs de T-SQL-instruktioner och funktioner som inte stöds eller som delvis stöds.
T-SQL-instruktion eller -funktion | Description |
---|---|
CREATE , INSERT , DROP och ALTER |
Stöds inte |
Schema- eller dataändringar | Stöds inte |
ANY , ALL och EXISTS |
Stöds inte |
WITHIN GROUP |
Stöds inte |
TOP PERCENT |
Stöds inte |
TOP WITH TIES |
Utvärderas som vanlig TOP |
TRUNCATE |
Returnerar närmaste värde |
SELECT * |
Kolumnordningen kan skilja sig från förväntningarna. Använd kolumnnamn om ordningen är viktig. |
AT TIME ZONE |
Stöds inte |
SQL-markörer | Stöds inte |
Korrelerade underfrågor | Stöds inte |
Rekursiva CTE:er | Stöds inte |
Dynamiska instruktioner | Stöds inte |
Flödeskontrollinstruktioner | Endast IF THEN ELSE instruktioner med ett identiskt schema för THEN och ELSE stöds. |
Duplicera kolumnnamn | Stöds inte. Det ursprungliga namnet bevaras för en kolumn. |
Datatyper | Data som returneras kan skilja sig i typ från SQL Server. Och har till exempel SMALLINT TINYINT ingen motsvarighet i Azure Data Explorer och kan returneras som INT32 eller INT64 i stället för BYTE eller INT16 . |
- Lär dig mer om SQL Server emulering i Azure Data Explorer
- Använda SQL för att Kusto-frågespråk fuskark