Типы запросов KQL

Завершено

Вы узнали о структуре запроса KQL в предыдущем уроке. Теперь давайте рассмотрим различные части и типы запросов KQL.

В этом уроке представлен обзор инструкций и функций запросов. В KQL все запросы состоят из одной или нескольких инструкций запроса. Эти инструкции влияют только на конкретный запрос, в котором они используются, если они не хранятся явным образом для дальнейшего использования. Наиболее распространенными типами инструкций запроса являются инструкции табличных выражений и инструкции let. Помимо обширной библиотеки встроенных функций, KQL позволяет выполнять определяемые пользователем функции, которые можно хранить или определять для использования в одном запросе.

Инструкции табличных выражений

Большинство запросов используют по крайней мере одну инструкцию табличного выражения, что означает, что входные и выходные данные состоят из таблиц или табличных наборов данных. Эти операторы обычно содержат операторы, каждый из которых начинается с табличных входных данных и возвращает табличные выходные данные.

Существует широкий спектр операторов, предоставляемых KQL, начиная от простых операторов (напримерcount, , sortи ) до более сложных (напримерparse, join, и whererender).

Например, следующий запрос содержит четыре оператора табличного выражения:

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 инструкции в следующем запросе используются для определения скалярных значений:

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 Обозреватель сохраняет функцию, принимающую параметр:

    .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")