Запрос данных с помощью 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 . |
Связанный контент
- Сведения об эмуляции SQL Server в Azure Data Explorer
- Использование SQL для язык запросов Kusto памятка