Поделиться через


Руководство: Изучение распространенных операторов

Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

Вы используете язык запросов Kusto (KQL) для записи запросов в Azure Data Explorer, Azure Monitor Log Analytics, Microsoft Sentinel и многое другое. В этом руководстве представлены основные операторы KQL, используемые для доступа к данным и анализа данных.

Дополнительные сведения о том, как запрашивать журналы в Azure Monitor, см. в статье "Начало работы с запросами журналов".

Примечание.

Не можете найти нужную информацию? Эта статья была недавно разделена следующим образом:

В этом руководстве вы узнаете, как:

Примеры в данном руководстве используют таблицуStormEvents, которая общедоступна в кластере help. Чтобы изучить собственные данные, создайте собственный бесплатный кластер.

Примеры, приведенные в этом руководстве, используют таблицуStormEvents, которая общедоступна в примерах данных аналитики погоды.

Предварительные условия

Для выполнения следующих запросов требуется среда запроса с доступом к примеру данных. Можно использовать один из следующих вариантов:

  • Учетная запись Microsoft или удостоверение пользователя Microsoft Entra для входа в кластер справки
  • Учетная запись Майкрософт или удостоверение пользователя Microsoft Entra
  • Рабочая область Fabric с емкостью, поддерживаемой Microsoft Fabric

Посчитать ряды

Начните с использования оператора count, чтобы найти количество записей storm в StormEvents таблице.

StormEvents 
| count

Выходные данные

Количество
59 066

См. пример данных

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

StormEvents 
| take 5

В следующей таблице показаны только пять из 22 возвращенных столбцов. Чтобы просмотреть полные выходные данные, выполните запрос.

Время начала Время окончания EpisodeId EventId Штат Тип события ...
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

Выходные данные

Штат Тип события СвойствоПовреждения
ЮЖНАЯ АТЛАНТИКА Waterspout 0
FLORIDA Ливень 0
FLORIDA Торнадо 6200000
ДЖОРДЖИЯ Ураганный ветер 2000
МИССИСИПИ Ураганный ветер 20000

Перечисление уникальных значений

Результаты предыдущего запроса показывают несколько типов штормов. Используйте отдельный оператор для перечисления всех уникальных типов штормов.

StormEvents 
| distinct EventType

Таблица содержит 46 типов штормов. Вот пример из 10 из них.

Тип события
Ураганный ветер
Град
Паводок
Засуха
Холод
Метель
Метель
Очень сильный ветер
Мороз/заморозки
Наводнение
...

Сортировка результатов

Чтобы просмотреть наиболее значительные наводнения в Техасе, причинившие наибольший ущерб, используйте оператор сортировки, чтобы упорядочить строки в порядке убывания на основе столбца DamageProperty. Порядок сортировки по умолчанию убывания. Чтобы отсортировать по возрастанию, укажите asc.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| sort by DamageProperty
| project StartTime, EndTime, State, 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
... ... ... ... ...

Фильтрация по условию

Где оператор фильтрует строки данных на основе определенных критериев.

Следующий запрос ищет события бури в определенной State конкретной EventType.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| project StartTime, EndTime, State, EventType, DamageProperty

Существует 146 событий, которые соответствуют этим условиям. Вот пример из пяти из них.

Время начала Время окончания Штат Тип события СвойствоПовреждения
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
... ... ... ... ...

Фильтрация по диапазону даты и времени

Используйте оператор "между" для фильтрации данных на основе определенного диапазона времени.

Следующий запрос находит все события шторма в период с 1 августа 2007 г. по 30 августа 2007 г. вместе с их состояниями, типами событий, временем начала и окончания. Запрос сортирует результаты по возрастанию по времени начала.

StormEvents
| where StartTime between (datetime(2007-08-01 00:00:00) .. datetime(2007-08-30 23:59:59))
| project State, EventType, StartTime, EndTime
| sort by StartTime asc 

Выходные данные

Штат Ивентаип Время начала Время окончания
ДЖОРДЖИЯ Чрезмерное тепло 2007-08-01 00:00:00 2007-08-27 23:59:00
ТЕННЕССИ Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
ТЕННЕССИ Засуха 2007-08-01 00:00:00 2007-08-3123:59:00
ЮЖНАЯ КАРОЛИНА Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
ТЕННЕССИ Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
ДЖОРДЖИЯ Чрезмерное тепло 2007-08-01 00:00:00 2007-08-27 23:59:00
ТЕННЕССИ Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
МИННЕСОТА Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
ВИСКОНСИН Засуха 2007-08-01 00:00:00 2007-08-31 23:59:00
ДЖОРДЖИЯ Чрезмерное тепло 2007-08-01 00:00:00 2007-08-27 23:59:00
... ... ... ...

Получение верхних n строк

Верхний оператор возвращает первые n строки, отсортированные по указанному столбцу.

Следующий запрос возвращает пять наводнений в Техасе, которые нанесли наибольший ущерб имуществу.

StormEvents
| where State == 'TEXAS' and EventType == 'Flood'
| top 5 by DamageProperty
| project StartTime, EndTime, State, 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

Выходные данные

Время начала Время окончания Продолжительность СвойствоПовреждения
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

Выходные данные

Время начала Время окончания ... Продолжительность
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 Коммунальная компания Частный
... ... ...

Следующий шаг

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