Упражнение. Подсчет событий с помощью функции count
Запрос Kusto можно использовать для изучения наборов данных и получения аналитических сведений. Вспомним, что у нас имеется набор метеоданных и требуется сравнить события для получения аналитических сведений из этих данных. Здесь вы узнаете, сколько событий определенного типа произошло в определенной области.
Использование функции count
Образец базы данных, которую мы используем, содержит запись для каждого события грозы в США в 2007 году. В общей сложности это около 60 тысяч записей.
Чтобы сгруппировать эти события в блоки информации, воспользуйтесь оператором summarize
. Оператор summarize
используется для всех функций, которые агрегируют группы значений нескольких строк для формирования одного сводного значения. Например, вы можете суммировать всю таблицу, подсчитав количество результатов с помощью следующего запроса.
Также имеется возможность свести данные в группы похожих типов событий, указав способ группировки агрегирования. Например, для подсчета событий по состоянию вы напишете запрос summarize
count
.state
Фактически предыдущее предложение очень похоже на фактический запрос. Используйте вызываемую функцию агрегирования count()
, которая подсчитывает количество строк по группам. Эта функция создает новый столбец, который предоставляет количество событий с группировкой по состояниям, для которого в место стандартного имени count_ мы указали в запросе новое имя EventCount. Переименование новых столбцов позволяет сделать запросы и их результаты более удобочитаемыми.
Скопируйте и вставьте запрос в редактор запросов.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Выполните запрос, нажав кнопку Выполнить над окном запроса, или нажав сочетание клавиш SHIFT+ВВОД
Вы должны получить результаты, аналогичные приведенным на следующем рисунке:
Использование функций dcount()
и countif()
Предыдущий запрос вернул количество событий для каждого штата. Однако существуют более сложные способы подсчета событий.
- Например, можно подсчитать только определенные типы событий. Функция
countif()
подсчитывает записи, для которых предикат истинен. Запрос, использующий,countif(DamageCrops > 0)
подсчитывает количество записей, для которых ущерб, нанесенный сельскохозяйственным культурам, был больше нуля. - Можно также подсчитать различные типы событий с помощью функции
dcount()
.
Мы создали запрос, который использует оператор summarize
с этими функциями счетчика для ответа на следующие вопросы:
- Сколько событий грозы произошло в каждом штате?
- Сколько событий в каждом штате нанесли ущерб?
- Сколько событий разного типа произошло в каждом штате?
Обратите внимание, что все элементы в операторе суммирования разделяются запятыми и группируются по одному и тому же столбцу, в данном случае State. Столбцы, не именованные в операторе summarize
, удаляются. Если вы хотите включить другие столбцы, именуйте их после столбца, по которому суммируются данные.
Выполните приведенный ниже запрос:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Вы должны получить результаты, аналогичные приведенным на следующем рисунке:
Обратите внимание на имена столбцов в результатах. Какая часть запроса соответствует каждому столбцу? Вы увидите, что функция
dcount()
создала новый столбец и присвоила ему имя по умолчанию Count. Также можно заметить, что это имя использовалось в качестве столбца для оператораsort
в запросе. Сколько различных типов гроз произошло в Техасе?
Использовать оператор distinct
.
Предыдущий запрос вернул количество, равное 27 различным типам грозы в Техасе в течение периода времени, охватываемого данными. Было бы интересно продолжить гранулирование и увидеть имена всех этих типов штормов. Чтобы просмотреть список, содержащий события каждого типа в Техасе, используйте оператор distinct()
, который перечисляет обособленные значения определенного столбца.
Выполните приведенный ниже запрос:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Вы должны получить результаты, аналогичные приведенным на следующем рисунке:
Взгляните на итоговый перечень. Какой-нибудь из типов шторма выглядит необычно?