Wykonywanie zapytań dotyczących danych przy użyciu języka T-SQL

Edytor zapytań usługi Azure Data Explorer obsługuje używanie języka T-SQL oprócz podstawowego języka zapytań, języka zapytań Kusto (KQL). Chociaż język KQL jest zalecanym językiem zapytań, język T-SQL może być przydatny w przypadku narzędzi, które nie mogą używać języka KQL.

Uwaga

Obsługiwane są tylko polecenia języka DQL (Data Query Language). Aby uzyskać więcej informacji, zobacz Pokrycie.

Wykonywanie zapytań przy użyciu języka T-SQL

Aby uruchomić zapytanie T-SQL, rozpocznij zapytanie z pustym wierszem komentarza języka T-SQL: --. Składnia -- nakazuje edytorowi zapytań interpretowanie następującego zapytania jako języka T-SQL, a nie języka KQL.

Przykład

--
SELECT * FROM StormEvents

T-SQL do język zapytań Kusto

Edytor zapytań obsługuje możliwość tłumaczenia zapytań T-SQL na język KQL. Ta funkcja tłumaczenia może być przydatna dla użytkowników, którzy znają język SQL i chcą dowiedzieć się więcej na temat języka KQL.

Aby uzyskać odpowiednik języka KQL dla instrukcji języka T-SQL SELECT , dodaj słowo kluczowe explain przed zapytaniem. Dane wyjściowe będą wersją języka KQL zapytania, która może być przydatna do zrozumienia odpowiedniej składni i pojęć języka KQL.

Pamiętaj, aby wstępnie czytać zapytania języka T-SQL z wierszem komentarza języka T-SQL, --, aby poinformować edytor zapytań o interpretowanie następującego zapytania jako języka T-SQL, a nie języka KQL.

Przykład

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

Wyjście

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)

Uruchamianie przechowywanych funkcji

W przypadku korzystania z języka T-SQL zalecamy utworzenie zoptymalizowanych zapytań KQL i hermetyzowanie ich w funkcjach przechowywanych, co minimalizuje kod T-SQL i może zwiększyć wydajność. Jeśli na przykład masz funkcję przechowywaną zgodnie z opisem w poniższej tabeli, możesz wykonać ją, jak pokazano w przykładzie kodu.

Nazwisko Parametry Treść Folder DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} Mójfolder Funkcja demonstracyjna z parametrem
SELECT * FROM kusto.MyFunction(10)

Uwaga

Aby odróżnić przechowywane funkcje i emulowane procedury składowane systemu SQL, wykonaj funkcje składowane z jawnym odwołaniem do schematu kusto . W tym przykładzie przechowywana funkcja jest wykonywana przy użyciu polecenia kusto.Myfunction.

Ustawianie właściwości żądania

Żądanie właściwości kontroluje sposób wykonywania i zwracania wyników przez zapytanie. Aby ustawić właściwości żądania za pomocą języka T-SQL, przedstaw zapytanie przy użyciu co najmniej jednej instrukcji z następującą składnią:

Składnia

DECLARE@__kql_set_requestPropertyName, wartość typu = ;

Parametry

Nazwisko Type Wymagania opis
requestPropertyName string ✔️ Nazwa właściwości żądania do ustawienia.
type string ✔️ Typ danych języka T-SQL wartości.
wartość skalar ✔️ Wartość, która ma zostać przypisana do właściwości żądania.

Uwaga

  • Dwie instrukcje muszą być oddzielone średnikiem i nie powinno być pustego wiersza przed zapytaniem.
  • Właściwości żądania dotyczą tylko instrukcji wyrażenia tabelarycznego, które są natychmiast zgodne.

Przykłady

W poniższej tabeli przedstawiono przykłady ustawiania właściwości żądania za pomocą języka T-SQL.

Właściwość Request Przykład
query_datetimescope_to DEKLAROWANIE @__kql_set_query_datetimescope_to DATETIME = '2023-03-31 03:02:01';
request_app_name DEKLAROWANIE @__kql_set_request_app_name NVARCHAR = "kuku";
query_results_cache_max_age ZADEKLARUJ czas @__kql_set_query_results_cache_max_age = '00:05:00';
truncationmaxsize DEKLAROWANIE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DEKLAROWANIE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DEKLAROWANIE @__kql_set_notruncation BIT = 1;
norequesttimeout DEKLAROWANIE @__kql_set_norequesttimeout BIT = 0;

Aby ustawić właściwości żądania za pomocą języka KQL, zobacz instrukcję set.

Pokrycie

Usługa Azure Data Explorer oferuje ograniczoną obsługę języka T-SQL. W poniższej tabeli przedstawiono instrukcje i funkcje języka T-SQL, które nie są obsługiwane lub są częściowo obsługiwane.

Instrukcja lub funkcja języka T-SQL opis
CREATE, INSERT, DROPi ALTER Nieobsługiwane
Modyfikacje schematu lub danych Nieobsługiwane
ANY, ALLi EXISTS Nieobsługiwane
WITHIN GROUP Nieobsługiwane
TOP PERCENT Nieobsługiwane
TOP WITH TIES Oceniane jako regularne TOP
TRUNCATE Zwraca najbliższą wartość
SELECT * Kolejność kolumn może się różnić od oczekiwań. Użyj nazw kolumn, jeśli kolejność ma znaczenie.
AT TIME ZONE Nieobsługiwane
Kursory SQL Nieobsługiwane
Skorelowane podzapytania Nieobsługiwane
Rekursywne CTEs Nieobsługiwane
Instrukcje dynamiczne Nieobsługiwane
Instrukcje sterowania przepływem Obsługiwane są tylko IF THEN ELSE instrukcje z identycznym schematem i .THEN ELSE
Zduplikowane nazwy kolumn Nieobsługiwane. Oryginalna nazwa jest zachowywana dla jednej kolumny.
Typy danych Zwrócone dane mogą różnić się od typu programu SQL Server. Na przykład TINYINT i SMALLINT nie mają odpowiednika w usłudze Azure Data Explorer i mogą zostać zwrócone jako INT32 lub INT64 zamiast BYTE lub INT16.