Руководство. Изучение распространенных операторов
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
язык запросов Kusto (KQL) используется для записи запросов в Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel и т. д. В этом руководстве приведены основные операторы KQL, используемые для доступа к данным и анализа данных.
Дополнительные сведения о том, как запрашивать журналы в Azure Monitor, см. в статье "Начало работы с запросами журналов".
Примечание.
Не можете найти нужную информацию? Эта статья была недавно разделена следующим образом:
- Общие операторы (эта статья)
- Использование функций агрегирования
- Присоединение данных из нескольких таблиц
- Создание геопространственных визуализаций
Из этого руководства вы узнаете, как выполнять следующие задачи:
Примеры в этом руководстве используют таблицуStormEvents
, которая общедоступна в кластере справки. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.
Примеры, приведенные в этом руководстве, используют таблицуStormEvents
, которая общедоступна в примерах данных аналитики погоды.
Необходимые компоненты
Для выполнения следующих запросов требуется среда запроса с доступом к примеру данных. Можно использовать один из следующих способов:
- Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra
- Рабочая область Fabric с емкостью с поддержкой Microsoft Fabric
Посчитать строки
Начните с использования оператора счетчика , чтобы найти количество записей storm в StormEvents
таблице.
StormEvents
| count
Выходные данные
Count |
---|
59 066 |
См. пример данных
Чтобы получить представление о данных, используйте оператор принятия для просмотра образца записей. Этот оператор возвращает указанное количество произвольных строк из таблицы, которое может быть полезно для предварительного просмотра общей структуры и содержимого данных.
StormEvents
| take 5
В следующей таблице показаны только 5 из 22 возвращаемых столбцов. Чтобы просмотреть полные выходные данные, выполните запрос.
Время начала | EndTime | EpisodeId | EventId | Штат | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | FLORIDA | Торнадо | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12554 | 68796 | МИССИСИПИ | Ураганный ветер | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | ДЖОРДЖИЯ | Ураганный ветер | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | ЮЖНАЯ АТЛАНТИКА | Waterspout | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | FLORIDA | Ливень | ... |
Выбор подмножества столбцов
Используйте оператор проекта для упрощения представления и выбора определенного подмножества столбцов. Использование project
часто эффективнее и проще читать, чем просматривать все столбцы.
StormEvents
| take 5
| project State, EventType, DamageProperty
Выходные данные
Штат | EventType | DamageProperty |
---|---|---|
ЮЖНАЯ АТЛАНТИКА | Waterspout | 0 |
FLORIDA | Ливень | 0 |
FLORIDA | Торнадо | 6200000 |
ДЖОРДЖИЯ | Ураганный ветер | 2000 |
МИССИСИПИ | Ураганный ветер | 20000 |
Вывод уникальных значений
Появляется, что существует несколько типов штормов на основе результатов предыдущего запроса. Используйте отдельный оператор для перечисления всех уникальных типов штормов.
StormEvents
| distinct EventType
В таблице есть 46 типов штормов. Вот пример из 10 из них.
EventType |
---|
Ураганный ветер |
Град |
Паводок |
Засуха |
Холод |
Метель |
Метель |
Очень сильный ветер |
Мороз/заморозки |
Наводнение |
... |
Фильтрация по условию
Где оператор фильтрует строки данных на основе определенных критериев.
Следующий запрос ищет события storm в определенной конкретной State
части EventType
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty
Существует 146 событий, которые соответствуют этим условиям. Вот пример из 5 из них.
Время начала | EndTime | Штат | EventType | DamageProperty |
---|---|---|---|---|
2007-01-13T08:45:00Z | 2007-01-13T10:30:00Z | TEXAS | Наводнение | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEXAS | Наводнение | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | TEXAS | Наводнение | 0 |
2007-01-15T22:00:00Z | 2007-01-16T22:00:00Z | TEXAS | Наводнение | 20000 |
2007-03-12T02:30:00Z | 2007-03-12T06:45:00Z | TEXAS | Наводнение | 0 |
... | ... | ... | ... | ... |
Сортировка результатов
Чтобы просмотреть верхние наводнения в Техасе, которые вызвали наибольший ущерб, используйте оператор сортировки , чтобы упорядочить строки в порядке убывания на основе столбца DamageProperty
. Порядок сортировки по умолчанию убывания. Чтобы отсортировать по возрастанию, укажите asc
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Выходные данные
Время начала | EndTime | Штат | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEXAS | Наводнение | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEXAS | Наводнение | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEXAS | Наводнение | 1000 000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEXAS | Наводнение | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEXAS | Наводнение | 750000 |
... | ... | ... | ... | ... |
Получение верхних n строк
Верхний оператор возвращает первые n строки, отсортированные по указанному столбцу.
Следующий запрос возвращает пять наводнений Техаса, которые вызвали наиболее поврежденное свойство.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Выходные данные
Время начала | EndTime | Штат | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | TEXAS | Наводнение | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | TEXAS | Наводнение | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | TEXAS | Наводнение | 1000 000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | TEXAS | Наводнение | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | TEXAS | Наводнение | 750000 |
Примечание.
Порядок операторов важен. Если вы положили top
здесь, where
вы получите разные результаты. Это связано с тем, что данные преобразуются каждым оператором в порядке. Дополнительные сведения см . в инструкциях табличных выражений.
Создание вычисляемых столбцов
Операторы проекта и расширения могут создавать вычисляемые столбцы.
Используется project
для указания только столбцов, которые требуется просмотреть, и используется extend
для добавления вычисляемого столбца в конец таблицы.
Следующий запрос создает вычисляемый Duration
столбец с разницей между StartTime
и EndTime
. Так как мы хотим просмотреть только несколько столбцов выбора, использование project
является лучшим вариантом в этом случае.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| project StartTime, EndTime, Duration = EndTime - StartTime, DamageProperty
Выходные данные
Время начала | EndTime | Duration | DamageProperty |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 1.01:30:00 | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | 12:00:00 | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | 05:00:00 | 1000 000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | 08:00:00 | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | 03:00:00 | 750000 |
Если вы посмотрите на вычисляемый Duration
столбец, вы можете заметить, что наводнение, которое вызвало наибольшее повреждение, было также самым длинным наводнением.
Используется extend
для просмотра вычисляемого Duration
столбца вместе со всеми другими столбцами. Столбец Duration
добавляется в качестве последнего столбца.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty desc
| extend Duration = EndTime - StartTime
Выходные данные
Время начала | EndTime | ... | Duration |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | ... | 1.01:30:00 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | ... | 12:00:00 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | ... | 05:00:00 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | ... | 08:00:00 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | ... | 03:00:00 |
Сопоставление значений из одного набора с другим
Статическое сопоставление — это полезный способ изменения представления результатов. В KQL один из способов выполнить статическое сопоставление — использовать динамический словарь и методы доступа для сопоставления значений из одного набора в другой.
let sourceMapping = dynamic(
{
"Emergency Manager" : "Public",
"Utility Company" : "Private"
});
StormEvents
| where Source == "Emergency Manager" or Source == "Utility Company"
| project EventId, Source, FriendlyName = sourceMapping[Source]
Выходные данные
EventId | Исходный код | Понятное имя |
---|---|---|
68796 | Специалист по управлению в чрезвычайных ситуациях | Общедоступный |
... | ... | ... |
72609 | Служебная компания | Private |
... | ... | ... |
Следующий шаг
Теперь, когда вы знакомы с основными принципами написания запросов Kusto, перейдите к следующему руководству и узнайте, как использовать функции агрегирования для получения более глубокого понимания данных.