Запрос данных с помощью 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-SQLSELECT, добавьте ключевое слово 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;

Параметры

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

Примечание

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

Примеры

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

Свойство Request Пример
query_datetimescope_to DECLARE @__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 DECLARE @__kql_set_query_results_cache_max_age TIME = '00:05:00';
truncationmaxsize DECLARE @__kql_set_truncationmaxsize BIGINT = 4294967297;
maxoutputcolumns DECLARE @__kql_set_maxoutputcolumns INT = 3001;
notruncation DECLARE @__kql_set_notruncation BIT = 1;
norequesttimeout DECLARE @__kql_set_norequesttimeout BIT = 0;

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

Охват

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

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