Упражнение. Подсчет событий с помощью функции count

Завершено

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

Использование функции count

Образец базы данных, которую мы используем, содержит запись для каждого события грозы в США в 2007 году. В общей сложности это около 60 тысяч записей.

Чтобы сгруппировать эти события в блоки информации, воспользуйтесь оператором summarize. Оператор summarize используется для всех функций, которые агрегируют группы значений нескольких строк для формирования одного сводного значения. Например, вы можете суммировать всю таблицу, подсчитав количество результатов с помощью следующего запроса.

Выполнить запрос

Снимок экрана: общий запрос и результаты оператора count.

Также имеется возможность свести данные в группы похожих типов событий, указав способ группировки агрегирования. Например, для подсчета событий по состоянию вы напишете запрос summarize count.state Фактически предыдущее предложение очень похоже на фактический запрос. Используйте вызываемую функцию агрегирования count(), которая подсчитывает количество строк по группам. Эта функция создает новый столбец, который предоставляет количество событий с группировкой по состояниям, для которого в место стандартного имени count_ мы указали в запросе новое имя EventCount. Переименование новых столбцов позволяет сделать запросы и их результаты более удобочитаемыми.

  1. Скопируйте и вставьте запрос в редактор запросов.

    Выполнить запрос

    StormEvents
    | summarize EventCount = count() by State
    | sort by EventCount
    
  2. Выполните запрос, нажав кнопку Выполнить над окном запроса, или нажав сочетание клавиш SHIFT+ВВОД

    Вы должны получить результаты, аналогичные приведенным на следующем рисунке:

    Снимок экрана: использование и результаты оператора count.

Использование функций dcount() и countif()

Предыдущий запрос вернул количество событий для каждого штата. Однако существуют более сложные способы подсчета событий.

  • Например, можно подсчитать только определенные типы событий. Функция countif() подсчитывает записи, для которых предикат истинен. Запрос, использующий, countif(DamageCrops > 0) подсчитывает количество записей, для которых ущерб, нанесенный сельскохозяйственным культурам, был больше нуля.
  • Можно также подсчитать различные типы событий с помощью функции dcount().

Мы создали запрос, который использует оператор summarize с этими функциями счетчика для ответа на следующие вопросы:

  • Сколько событий грозы произошло в каждом штате?
  • Сколько событий в каждом штате нанесли ущерб?
  • Сколько событий разного типа произошло в каждом штате?

Обратите внимание, что все элементы в операторе суммирования разделяются запятыми и группируются по одному и тому же столбцу, в данном случае State. Столбцы, не именованные в операторе summarize, удаляются. Если вы хотите включить другие столбцы, именуйте их после столбца, по которому суммируются данные.

  1. Выполните приведенный ниже запрос:

    Выполнить запрос

    StormEvents
    | summarize count(),
        EventsWithDamageToCrops = countif(DamageCrops > 0),
        Count = dcount(EventType) by State
    | sort by Count
    

    Вы должны получить результаты, аналогичные приведенным на следующем рисунке:

    Снимок экрана: запрос Kusto, который подсчитывает события по состоянию.

  2. Обратите внимание на имена столбцов в результатах. Какая часть запроса соответствует каждому столбцу? Вы увидите, что функция dcount() создала новый столбец и присвоила ему имя по умолчанию Count. Также можно заметить, что это имя использовалось в качестве столбца для оператора sort в запросе. Сколько различных типов гроз произошло в Техасе?

Использовать оператор distinct.

Предыдущий запрос вернул количество, равное 27 различным типам грозы в Техасе в течение периода времени, охватываемого данными. Было бы интересно продолжить гранулирование и увидеть имена всех этих типов штормов. Чтобы просмотреть список, содержащий события каждого типа в Техасе, используйте оператор distinct(), который перечисляет обособленные значения определенного столбца.

  1. Выполните приведенный ниже запрос:

    Выполнить запрос

    StormEvents
    | where State == "TEXAS"
    | distinct EventType
    | sort by EventType asc
    

    Вы должны получить результаты, аналогичные приведенным на следующем рисунке:

    Снимок экрана: запрос Kusto, в котором используется оператор distinct.

  2. Взгляните на итоговый перечень. Какой-нибудь из типов шторма выглядит необычно?