Обзор языка запросов Kusto (KQL)

Язык запросов Kusto (KQL) — это мощный инструмент для изучения данных и выявления закономерностей, аномалий и выбросов, а также создания статистического моделирования и многого другого. KQL — это простой, но мощный язык для запроса структурированных, частично структурированных и неструктурированных данных. Язык выразителен, прост в чтении и понимании намерения запроса и оптимизирован для разработки. язык запросов Kusto оптимально подходит для запроса телеметрии, метрик и журналов с глубокой поддержкой поиска и анализа текста, операторов и функций временных рядов, аналитики и агрегирования, поиска геопространственных данных, поиска по подобия векторов и многих других языковых конструкций, которые обеспечивают наиболее оптимальный язык для анализа данных. В запросе используются сущности схемы, упорядоченные в иерархию, аналогичную SQL: базы данных, таблицы и столбцы.

В этой статье приводится описание языка запросов и практические упражнения, которые попросит вас приступить к написанию запросов. Чтобы получить доступ к среде запросов, используйте пользовательский веб-интерфейс azure Data Explorer. Сведения об использовании KQL см. в статье Руководство. Общие операторы.

Что такое запрос Kusto?

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

Что такое инструкция запроса?

Пользовательские инструкции запросов бывают трех типов:

Все инструкции запроса разделяются точкой с запятой ; и влияют только на запрос.

Примечание

Сведения об инструкциях запроса приложения см. в разделе Инструкции запроса приложения.

Наиболее распространенным видом инструкции запроса является инструкция табличного выражения, то есть входные и выходные данные состоят из таблиц или табличных наборов данных. Табличные инструкции содержат несколько операторов (или не содержат их вообще), каждый из которых начинается с табличных входных данных и возвращает табличные выходные данные. Для разделения операторов в последовательности используется символ вертикальной черты |. Потоки данных передаются от одного оператора другому. Данные фильтруются или обрабатываются на каждом шаге, а затем отправляются на следующий шаг.

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

Рассмотрим пример запроса.

StormEvents 
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"  
| count 
Count
28

Примечание

KQL учитывает регистр для всего: имен таблиц, имен столбцов таблиц, операторов, функций и т. д.

Этот запрос содержит одну инструкцию табличного выражения. Инструкция начинается со ссылки на таблицу с именем StormEvents и содержит несколько операторов, where и count, разделенных символом вертикальной черты. Строки данных для исходной таблицы фильтруются по значению столбца StartTime, а затем — по значению столбца State. В последней строке запрос возвращает таблицу с одним столбцом и одной строкой, содержащей количество оставшихся строк.

Чтобы опробовать еще несколько запросов Kusto, см. руководство по написанию запросов Kusto.

Команды управления

В отличие от запросов Kusto, команды управления — это запросы к Kusto для обработки или изменения данных или метаданных. Например, следующая команда управления создает таблицу Kusto с двумя столбцами и LevelText:

.create table Logs (Level:string, Text:string)

Команды управления имеют собственный синтаксис, который не является частью синтаксиса язык запросов Kusto, хотя эти два имеют много концепций. В частности, команды управления отличаются от запросов тем, что первый символ в тексте команды является символом точки (.), который не может запустить запрос. Это различие предотвращает многие виды атак безопасности просто потому, что оно предотвращает внедрение команд управления в запросы.

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

Дополнительные сведения о командах управления см. в статье Общие сведения о командах управления.

KQL в других службах

KQL используется многими другими службами Майкрософт. Конкретные сведения об использовании KQL в этих средах см. по следующим ссылкам: