Exercício – Contar eventos usando a função count
Uma consulta Kusto pode ser usada para explorar conjuntos de dados e obter insights. Lembre-se de que temos um conjunto de dados meteorológicos e queremos comparar eventos para obter insights com base nesses dados. Aqui, você descobrirá quantos eventos de um determinado tipo ocorreram em uma área específica.
Usar a função count
O banco de dados de exemplo que estamos usando tem uma entrada para cada evento de tempestade nos EUA em 2007, totalizando cerca de 60 mil registros.
Para agrupar esses eventos em partes de informações, você usará o operador summarize
. summarize
é usado para todas as funções que agregam grupos de valores de várias linhas para formar um só valor de resumo. Você pode resumir a tabela inteira, por exemplo, contando o número de resultados usando a seguinte consulta:
Você também pode resumir dados em grupos de tipos semelhantes de eventos especificando a maneira como deseja agrupar a agregação. Por exemplo, para contar eventos por estado, você pode escrever uma consulta para summarize
count
por state
. Na verdade, a frase anterior é muito semelhante à consulta real. Você usará a função de agregação chamada count()
, que conta o número de linhas por grupo. Esta função gera uma nova coluna que fornece a contagem de eventos agrupados por estado, que renomeamos dentro da consulta do nome padrão de count_ para EventCount. Renomear novas colunas é uma prática recomendada para tornar as consultas e seus resultados mais legíveis.
Copie e cole a consulta no editor de consultas.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Execute a consulta selecionando o botão Executar acima da janela de consulta ou pressionando Shift + Enter.
Você deve obter resultados parecidos com a seguinte imagem:
Usar as funções dcount()
e countif()
A consulta anterior retornou o número de eventos por estado. No entanto, há maneiras mais sofisticadas de contar eventos.
- Por exemplo, você pode contar apenas determinados tipos de eventos. A função
countif()
conta os registros para os quais um predicado é verdadeiro. A consulta usandocountif(DamageCrops > 0)
contaria o número de registros para os quais os danos a plantações são maiores que zero. - Você também pode contar tipos distintos de eventos usando a função
dcount()
.
Criamos uma consulta que usa o operador summarize
com essas funções de contagem para responder às seguintes perguntas:
- Quantos eventos de tempestade aconteceram em cada estado?
- Quantos eventos em cada estado causaram danos?
- Quantos tipos de eventos diferentes aconteceram em cada estado?
Observe que todos os elementos dentro do operador de resumo são separados por vírgulas e agrupados segundo a mesma coluna, nesse caso, State. Colunas não nomeadas no operador summarize
são removidas. Se quiser incluir outras colunas, nomeie-as de acordo com a coluna na qual os dados são resumidos.
Execute a seguinte consulta:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Você deve obter resultados parecidos com a seguinte imagem:
Observe os nomes das colunas nos resultados. Qual parte da consulta corresponde a cada coluna? Você pode ver que a função
dcount()
criou uma nova coluna e deu a ela o nome Count. Observe também que você usou esse nome como a coluna do operadorsort
na consulta. Quantos tipos diferentes de tempestades ocorreram no Texas?
Use o operador distinct
A consulta anterior retornou uma contagem de 27 tipos diferentes de tempestades no Texas durante o período coberto por esses dados. Seria interessante fazer uma busca mais detalhada e ver os nomes de todos esses tipos de tempestades. Para ver uma lista de cada tipo de evento diferente no Texas, use o operador distinct()
, que lista os valores distintos de uma coluna específica.
Execute a seguinte consulta:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Você deve obter resultados parecidos com a seguinte imagem:
Confira a lista resultante. Algum dos tipos de tempestade surpreendeu você?