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 języka 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 T-SQL SELECT , dodaj słowo kluczowe explain przed zapytaniem. Dane wyjściowe będą wersją KQL zapytania, która może być przydatna do zrozumienia odpowiedniej składni i pojęć dotyczących języka KQL.

Pamiętaj, aby wstępnie czytać zapytania 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

Dane wyjściowe

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 funkcji przechowywanych

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

Nazwa Parametry Treść Folder DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} Myfolder Funkcja demo z parametrem
SELECT * FROM kusto.MyFunction(10)

Uwaga

Aby odróżnić funkcje przechowywane i emulowane procedury składowane systemu SQL, wykonaj funkcje składowane z wyraźnym 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, wstępnie treść zapytania z co najmniej jedną instrukcją z następującą składnią:

Składnia

DECLARE@__kql_set_requestPropertyName, wartośćtypu=;

Parametry

Nazwa Typ Wymagane Opis
requestPropertyName string ✔️ Nazwa właściwości żądania do ustawienia.
typ string ✔️ Typ danych języka T-SQL wartości.
wartość Wartość skalarna ✔️ Wartość do przypisania 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 mają zastosowanie tylko do 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 podquery Nieobsługiwane
Rekursywne ctEs Nieobsługiwane
Instrukcje dynamiczne Nieobsługiwane
Instrukcje sterowania przepływem Obsługiwane są tylko IFTHENELSE instrukcje z identycznym schematem THEN i.ELSE
Zduplikowane nazwy kolumn Nieobsługiwane. Oryginalna nazwa jest zachowywana dla jednej kolumny.
Typy danych Zwrócone dane mogą różnić się w typie od SQL Server. Na przykład TINYINT i SMALLINT nie ma odpowiednika w usłudze Azure Data Explorer i może zostać zwrócony jako INT32 lub INT64 zamiast BYTE lub INT16.