Типы запросов KQL
Вы узнали о структуре запроса KQL в предыдущем уроке. Теперь давайте рассмотрим различные части и типы запросов KQL.
В этом уроке представлен обзор инструкций и функций запросов. В KQL все запросы состоят из одной или нескольких инструкций запроса. Эти инструкции влияют только на конкретный запрос, в котором они используются, если они не хранятся явным образом для дальнейшего использования. Наиболее распространенными типами инструкций запроса являются инструкции табличных выражений и инструкции let. Помимо обширной библиотеки встроенных функций, KQL позволяет выполнять определяемые пользователем функции, которые можно хранить или определять для использования в одном запросе.
Инструкции табличных выражений
Большинство запросов используют по крайней мере одну инструкцию табличного выражения, что означает, что входные и выходные данные состоят из таблиц или табличных наборов данных. Эти операторы обычно содержат операторы, каждый из которых начинается с табличных входных данных и возвращает табличные выходные данные.
Существует широкий спектр операторов, предоставляемых KQL, начиная от простых операторов (напримерcount
, , sort
и ) до более сложных (напримерparse
, join
, и where
render
).
Например, следующий запрос содержит четыре оператора табличного выражения:
StormEvents // tabular expression statement 1
| where EventType == "Flood" // tabular expression statement 2
| sort by DamageProperty asc // tabular expression statement 3
| take 10 // tabular expression statement 4
Инструкции let
Оператор let
определяет привязку между именем и выражением. С помощью инструкций можно разбить длинный запрос на небольшие именованные части, которые проще понять.
Например, мы использовали let
инструкции в следующем запросе для определения скалярных значений:
let n = 10; // number
let place = "VIRGINIA"; // string
let cutoff = ago(12345d); // datetime
StormEvents
| where StartTime > cutoff and State == place
| take n
Встроенные функции
Встроенные функции — это жестко закодированные функции, определенные KQL, которые нельзя изменить. KQL имеет богатую библиотеку функций, доступную для использования, которую можно найти в официальной документации по KQL. Функции варьируются от простой сортировки и сопоставления с сложными статистическими и геопространственных функциями.
Например, следующая strcat()
функция объединяет строковые аргументы:
print str = strcat("hello", " ", "world")
Пользовательские функции
Определяемые пользователем функции определяются пользователем по имени. Мы можем разделить определяемые пользователем функции на два типа:
Хранимые функции: определяемые пользователем функции, которые хранятся и управляются сущностями схемы базы данных, похожими на таблицы. Различные продукты используют различные способы хранения функций.
Например, следующий запрос в Azure Data Explorer сохраняет функцию, принимающую параметр:
.create function with (docstring = 'Demo function with parameter', folder='Demo') MyFunction2(myLimit: long) {StormEvents | take myLimit}
В других средах, таких как Azure Monitor и Microsoft Sentinel, можно сохранять запросы через пользовательский интерфейс.
Определяемые запросом функции: определяемые пользователем функции, которые определены и используются в пределах одного запроса. Определение таких функций выполняется инструкцией let.
Например, следующий запрос определяет и использует функцию f:
let f=(a: string, b: string) { strcat(a, " (la la la) ", b) }; print f("hello", "world")