Руководство. Изучение общих операторов
язык запросов Kusto (KQL) используется для написания запросов в Azure Data Explorer, Azure Monitor Log Analytics, Azure Sentinel и т. д. Это руководство содержит общие сведения о основных операторах KQL, используемых для доступа к данным и их анализа.
Более конкретные рекомендации по отправке запросов к журналам в Azure Monitor см. в статье Начало работы с запросами журналов.
Примечание
Не можете найти нужную информацию? Эта статья недавно была разделена следующим образом:
- Общие сведения об операторах (эта статья)
- Использование статистических функций
- Объединение данных из нескольких таблиц
- Создание геопространственных визуализаций
Из этого руководства вы узнаете, как выполнять следующие задачи:
В примерах этого руководства используется StormEvents
таблица, которая является общедоступной в кластере справки. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.
Предварительные требования
- Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra для входа в кластер справки
Считать строки
Начните с использования оператора count , чтобы найти количество записей storm в StormEvents
таблице.
StormEvents
| count
Выходные данные
Count |
---|
59066 |
Просмотр примера данных
Чтобы получить представление о данных, используйте оператор take для просмотра выборки записей. Этот оператор возвращает указанное количество произвольных строк из таблицы, что может быть полезно для предварительного просмотра общей структуры и содержимого данных.
StormEvents
| take 5
В следующей таблице показаны только 6 из 22 возвращенных столбцов. Чтобы просмотреть полные выходные данные, выполните запрос.
StartTime | EndTime | EpisodeId | EventId | Состояние | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | Флорида | Ураган | ... |
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 | ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ | Торнадо | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | Флорида | Сильный ливень | ... |
Выбор подмножества столбцов
Используйте оператор проекта , чтобы упростить представление и выбрать определенное подмножество столбцов. Использование project
часто является более эффективным и простым для чтения, чем просмотр всех столбцов.
StormEvents
| take 5
| project State, EventType, DamageProperty
Выходные данные
Состояние | EventType | DamageProperty |
---|---|---|
ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ | Торнадо | 0 |
Флорида | Сильный ливень | 0 |
Флорида | Ураган | 6200000 |
Грузия | Шквалистый ветер | 2000 |
Миссисипи | Шквалистый ветер | 20 000 |
Вывод списка уникальных значений
Похоже, что на основе результатов предыдущего запроса существует несколько типов штормов. Используйте оператор distinct , чтобы получить список всех уникальных типов storm.
StormEvents
| distinct EventType
В таблице приведено 46 типов штормов. Вот пример из 10 из них.
EventType |
---|
Шквалистый ветер |
Град |
Внезапное наводнение |
Засухи |
Зимняя погода |
Метель |
Тяжелый снег |
Очень сильный ветер |
Мороз/заморозка |
Наводнение |
... |
Фильтрация по условию
Оператор where фильтрует строки данных на основе определенных критериев.
Следующий запрос ищет события storm в определенном State
из определенного EventType
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty
Существует 146 событий, соответствующих этим условиям. Вот пример из 5 из них.
StartTime | EndTime | Состояние | EventType | DamageProperty |
---|---|---|---|---|
2007-01-13T08:45:00Z | 2007-01-13T10:30:00Z | Техас | Наводнение | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | Техас | Наводнение | 0 |
2007-01-13T09:30:00Z | 2007-01-13T21:00:00Z | Техас | Наводнение | 0 |
2007-01-15T22:00:00Z | 2007-01-16T22:00:00Z | Техас | Наводнение | 20 000 |
2007-03-12T02:30:00Z | 2007-03-12T06:45:00Z | Техас | Наводнение | 0 |
... | ... | ... | ... | ... |
Сортировка результатов
Чтобы просмотреть наиболее распространенные наводнения в Техасе, которые нанесли наибольший ущерб, используйте оператор сортировки , чтобы расположить строки в порядке убывания на основе столбца DamageProperty
. Порядок сортировки по умолчанию — по убыванию. Чтобы сортировать по возрастанию, укажите asc
.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Выходные данные
StartTime | EndTime | Состояние | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | Техас | Наводнение | 5000000 |
2007-06-27T00:00:00Z | 2007-06-27T12:00:00Z | Техас | Наводнение | 1200000 |
2007-06-28T18:00:00Z | 2007-06-28T23:00:00Z | Техас | Наводнение | 1000000 |
2007-06-27T00:00:00Z | 2007-06-27T08:00:00Z | Техас | Наводнение | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | Техас | Наводнение | 750000 |
... | ... | ... | ... | ... |
Получение первых n строк
Оператор top возвращает первые n строк, отсортированных по указанному столбцу.
Следующий запрос возвращает пять наводнений в Техасе, которые вызвали наибольшее повреждение имущества.
StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, EventType, DamageProperty
Выходные данные
StartTime | EndTime | Состояние | EventType | DamageProperty |
---|---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | Техас | Наводнение | 5000000 |
2007-06-27T00:00:00Z | 27.06.2007T12:00:00Z | Техас | Наводнение | 1200000 |
28.06.2007T18:00:00Z | 28.06.2007T23:00:00Z | Техас | Наводнение | 1000000 |
2007-06-27T00:00:00Z | 27.06.2007: 00:00Z | Техас | Наводнение | 750000 |
2007-06-26T20:00:00Z | 2007-06-26T23:00:00Z | Техас | Наводнение | 750000 |
Примечание
Порядок операторов важен. Если вы поместите top
здесь where
, вы получите разные результаты. Это связано с тем, что данные преобразуются каждым оператором по порядку. Дополнительные сведения см. в разделе Операторы табличных выражений.
создавать вычисляемые столбцы;
Операторы project и extend могут создавать вычисляемые столбцы.
Используйте 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
Выходные данные
StartTime | EndTime | Длительность | DamageProperty |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | 1.01:30:00 | 5000000 |
2007-06-27T00:00:00Z | 27.06.2007T12:00:00Z | 12:00:00 | 1200000 |
28.06.2007T18:00:00Z | 28.06.2007T23:00:00Z | 05:00:00 | 1000000 |
2007-06-27T00:00:00Z | 27.06.2007: 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
Выходные данные
StartTime | EndTime | ... | Duration |
---|---|---|---|
2007-08-18T21:30:00Z | 2007-08-19T23:00:00Z | ... | 1.01:30:00 |
2007-06-27T00:00:00Z | 27.06.2007T12:00:00Z | ... | 12:00:00 |
28.06.2007T18:00:00Z | 28.06.2007T23:00:00Z | ... | 05:00:00 |
2007-06-27T00:00:00Z | 27.06.2007: 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 | Source | FriendlyName |
---|---|---|
68796 | Специалист по управлению в чрезвычайных ситуациях | Общедоступные |
... | ... | ... |
72609 | Утилита компании | Private |
... | ... | ... |
Следующий шаг
Теперь, когда вы знакомы с основными принципами написания запросов Kusto, перейдите к следующему руководству и узнайте, как использовать функции агрегирования для получения более глубокого понимания данных.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по