Dotazování dat pomocí T-SQL

Editor dotazů Azure Data Explorer podporuje kromě primárního dotazovacího jazyka Kusto (KQL) použití jazyka T-SQL. Zatímco KQL je doporučený dotazovací jazyk, T-SQL může být užitečný pro nástroje, které nemůžou používat KQL.

Poznámka

Podporují se pouze příkazy DQL (Data Query Language). Další informace najdete v tématu Pokrytí.

Dotazování pomocí T-SQL

Pokud chcete spustit dotaz T-SQL, začněte dotaz prázdným řádkem komentáře T-SQL: --. Syntaxe -- říká editoru dotazů, aby následující dotaz interpretovat jako T-SQL, a ne jako KQL.

Příklad

--
SELECT * FROM StormEvents

T-SQL do dotazovací jazyk Kusto

Editor dotazů podporuje možnost překladu dotazů T-SQL do KQL. Tato funkce překladu může být užitečná pro uživatele, kteří jsou obeznámeni s SQL a chtějí se dozvědět více o KQL.

Chcete-li získat ekvivalentní KQL pro příkaz T-SQL SELECT , přidejte před dotaz klíčové slovo explain . Výstupem bude verze KQL dotazu, která může být užitečná pro pochopení odpovídající syntaxe a konceptů KQL.

Nezapomeňte před dotazy T-SQL použít řádek komentáře T-SQL, --aby editor dotazů interpretoval následující dotaz jako T-SQL, a ne jako KQL.

Příklad

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

Výstup

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)

Spuštění uložených funkcí

Při použití T-SQL doporučujeme vytvářet optimalizované dotazy KQL a zapouzdřovat je do uložených funkcí, protože tím se minimalizuje kód T-SQL a může se zvýšit výkon. Pokud máte například uloženou funkci, jak je popsáno v následující tabulce, můžete ji spustit, jak je znázorněno v příkladu kódu.

Name Parametry Text Složka DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Demo funkce s parametrem
SELECT * FROM kusto.MyFunction(10)

Poznámka

Chcete-li rozlišovat mezi uloženými funkcemi a uloženými procedurami emulovaného systému SQL, spusťte uložené funkce s explicitním odkazem na kusto schéma. V příkladu se uložená funkce spustí pomocí příkazu kusto.Myfunction.

Nastavení vlastností požadavku

Vlastnosti požadavku určují, jak se dotaz provede a vrátí výsledky. Pokud chcete nastavit vlastnosti požadavku pomocí T-SQL, předkažte dotaz jedním nebo více příkazy s následující syntaxí:

Syntax

DECLARE@__kql_set_hodnotatypu=requestPropertyName;

Parametry

Název Typ Vyžadováno Popis
requestPropertyName string ✔️ Název vlastnosti požadavku , která se má nastavit.
typ string ✔️ Datový typ T-SQL hodnoty.
value Skalár ✔️ Hodnota, která se má přiřadit vlastnosti požadavku.

Poznámka

  • Dva příkazy musí být oddělené středníkem a před dotazem by neměl být prázdný řádek.
  • Vlastnosti požadavku se vztahují pouze na příkazy tabulkového výrazu , které bezprostředně následují.

Příklady

Následující tabulka ukazuje příklady, jak nastavit vlastnosti požadavku pomocí T-SQL.

Vlastnost Request Příklad
query_datetimescope_to DEKLARUJTE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DEKLARUJTE @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age DEKLAROVAT @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DEKLARUJTE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DEKLARUJTE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DEKLAROVAT @__kql_set_notruncation BIT = 1;
norequesttimeout DEKLAROVAT @__kql_set_norequesttimeout BIT = 0;

Pokud chcete nastavit vlastnosti požadavku pomocí KQL, projděte si příkaz set.

Pokrytí

Azure Data Explorer nabízí omezenou podporu T-SQL. Následující tabulka popisuje funkce a příkazy T-SQL, které nejsou podporované nebo jsou podporované částečně.

Příkaz nebo funkce T-SQL Description
CREATE, INSERT, DROPa ALTER Nepodporováno
Úpravy schématu nebo dat Nepodporováno
ANY, ALLa EXISTS Nepodporováno
WITHIN GROUP Nepodporováno
TOP PERCENT Nepodporováno
TOP WITH TIES Vyhodnoceno jako normální TOP
TRUNCATE Vrátí nejbližší hodnotu.
SELECT * Pořadí sloupců se může lišit od očekávání. Pokud záleží na pořadí, použijte názvy sloupců.
AT TIME ZONE Nepodporováno
Kurzory SQL Nepodporováno
Korelované poddotazy Nepodporováno
Rekurzivní CTE Nepodporováno
Dynamické příkazy Nepodporováno
Příkazy řízení toku Podporují se pouze IFTHENELSE příkazy se stejným schématem pro THEN a.ELSE
Duplicitní názvy sloupců Nepodporováno Původní název se zachová pro jeden sloupec.
Typy dat Vrácená data se mohou lišit od typu SQL Server. Například TINYINT a SMALLINT nemají v Azure Data Explorer žádný ekvivalent a může se vrátit jako INT32 nebo INT64 místo BYTE nebo INT16.