Запрос данных с помощью T-SQL

Редактор запросов Azure Data Explorer поддерживает использование T-SQL в дополнение к основному языку запросов Kusto (KQL). Хотя KQL является рекомендуемым языком запросов, T-SQL может быть полезным для инструментов, которые не могут использовать KQL.

Примечание.

Поддерживаются только команды языка запросов данных (DQL). Дополнительные сведения см. в разделе "Покрытие".

Запрос с помощью T-SQL

Чтобы запустить запрос T-SQL, начните запрос с пустой строки комментариев T-SQL: -- Синтаксис -- сообщает редактору запросов интерпретировать следующий запрос как T-SQL, а не KQL.

Пример

--
SELECT * FROM StormEvents

T-SQL в язык запросов Kusto

Редактор запросов поддерживает возможность перевода запросов T-SQL в KQL. Эта функция перевода может быть полезной для пользователей, знакомых с SQL, и хотите узнать больше о KQL.

Чтобы получить эквивалентный KQL для инструкции T-SQL SELECT , добавьте ключевое слово explain перед запросом. Выходные данные будут версией запроса KQL, которая может быть полезна для понимания соответствующего синтаксиса и концепций KQL.

Не забудьте предуказать редактору запросов T-SQL с помощью строки комментариев T-SQL, --чтобы сообщить редактору запросов интерпретировать следующий запрос как T-SQL, а не KQL.

Пример

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

Выходные данные

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)

Запуск хранимых функций

При использовании T-SQL рекомендуется создавать оптимизированные запросы KQL и инкапсулировать их в хранимых функциях, что позволяет свести к минимуму код T-SQL и повысить производительность. Например, если у вас есть хранимая функция, как описано в следующей таблице, его можно выполнить, как показано в примере кода.

Имя. Параметры Текст Папка DocString
MyFunction (myLimit: long) {StormEvents | take myLimit} MyFolder Демонстрация функции с параметром
SELECT * FROM kusto.MyFunction(10)

Примечание.

Чтобы различать хранимые функции и эмулированные системные хранимые процедуры SQL, выполните хранимые функции с явной ссылкой на схему kusto . В примере хранимая функция выполняется с помощью kusto.Myfunction.

Задание свойств запроса

Свойства запроса определяют, как выполняется запрос и возвращает результаты. Чтобы задать свойства запроса с помощью T-SQL, передайте запрос с помощью одной или нескольких инструкций с помощью следующего синтаксиса:

Синтаксис

DECLARE@__kql_set_Значение типа = requestPropertyName ;

Параметры

Имя (название) Type Обязательно Описание
requestPropertyName string ✔️ Имя заданного свойства запроса.
type string ✔️ Тип данных T-SQL значения.
значение скаляр ✔️ Значение, которое необходимо назначить свойству запроса.

Примечание.

  • Два оператора должны быть разделены точкой с запятой, и перед запросом не должно быть пустой строки.
  • Свойства запроса применяются только к операторам табличных выражений , которые немедленно следуют.

Примеры

В следующей таблице приведены примеры настройки свойств запроса с помощью T-SQL.

Свойство Request Пример
query_datetimescope_to ОБЪЯВЛЕНИЕ @__KQL_SET_QUERY_DATETIMESCOPE_TO DATETIME = '2023-03-31 03:02:01';
request_app_name DECLARE @__kql_set_request_app_name NVARCHAR = 'kuku';
query_results_cache_max_age ОБЪЯВЛЕНИЕ @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize ОБЪЯВЛЕНИЕ @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns ОБЪЯВЛЕНИЕ @__kql_set_maxoutputcolumns INT = 3001;
notruncation ОБЪЯВЛЕНИЕ @__KQL_SET_NOTRUNCATION BIT = 1;
norequesttimeout ОБЪЯВЛЕНИЕ @__KQL_SET_NOREQUESTTIMEOUT BIT = 0;

Чтобы задать свойства запроса с помощью KQL, см . инструкцию set.

Охват

Azure Data Explorer предлагает ограниченную поддержку T-SQL. В следующей таблице описаны инструкции T-SQL и функции, которые не поддерживаются или частично поддерживаются.

Инструкция или компонент T-SQL Description
CREATE, INSERT, DROP и ALTER Не поддерживается
Изменения схемы или данных Не поддерживается
ANY, ALL и EXISTS Не поддерживается
WITHIN GROUP Не поддерживается
TOP PERCENT Не поддерживается
TOP WITH TIES Вычисляется как обычный TOP
TRUNCATE Возвращает ближайшее значение
SELECT * Порядок столбцов может отличаться от ожиданий. Используйте имена столбцов, если имеет значение порядка.
AT TIME ZONE Не поддерживается
Курсоры SQL Не поддерживается
Коррелированные вложенные запросы Не поддерживается
Рекурсивные CTE Не поддерживается
Динамические операторы Не поддерживается
Операторы управления потоком Поддерживаются только IF THEN ELSE операторы с идентичной схемой THEN и ELSE поддерживаются.
Повторяющиеся имена столбцов Не поддерживается. Исходное имя сохраняется для одного столбца.
Типы данных Возвращаемые данные могут отличаться от типа SQL Server. Например, TINYINT и SMALLINT не имеет эквивалента в Azure Data Explorer, и может возвращаться как INT32 или INT64 вместо BYTE него INT16.