Läs på engelska

Dela via


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.

Fråga med T-SQL

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.

Exempel

--
SELECT * FROM StormEvents

T-SQL till Kusto-frågespråk

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.

Exempel

--
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)

Köra lagrade funktioner

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

Ange egenskaper för begäran

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:

Syntax

DECLARE @__kql_set_ requestPropertyName-typvärde=;

Parametrar

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.

Exempel

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.

Täckning

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, DROPoch ALTER Stöds inte
Schema- eller dataändringar Stöds inte
ANY, ALLoch 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 IFTHENELSE 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 SMALLINTTINYINT ingen motsvarighet i Azure Data Explorer och kan returneras som INT32 eller INT64 i stället för BYTE eller INT16.