Exercício - Contar eventos usando a função de contagem
Você pode usar uma consulta Kusto 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 informações a partir desses dados. Aqui, você descobrirá quantos de um determinado tipo de evento ocorreram em uma determinada área.
Utilizar 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, para um total de cerca de 60 mil registros.
Para agrupar esses eventos em partes de informações, você usará o summarize
operador. summarize
é usado para todas as funções que agregam grupos de valores de várias linhas para formar um único 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ê escreverá uma consulta em summarize
count
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. Essa função gera uma nova coluna que fornece a contagem de eventos agrupados por estado, que renomeamos dentro da consulta do nome padrão 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:
Use as dcount()
funções e countif()
A consulta anterior retornou o número de eventos por estado. Existem, no entanto, formas mais sofisticadas de contar eventos.
- Por exemplo, você pode contar apenas certos tipos de eventos. A
countif()
função conta registros para os quais um predicado é verdadeiro. A consulta usandocountif(DamageCrops > 0)
contaria o número de registros para os quais o dano às lavouras foi maior que zero. - Você também pode contar tipos distintos de eventos usando a
dcount()
função.
Construímos uma consulta que usa o summarize
operador com essas funções de contagem para responder às seguintes perguntas:
- Quantas tempestades aconteceram em cada estado?
- Quantos eventos em cada estado causaram danos?
- Quantos tipos diferentes de eventos aconteceram em cada estado?
Observe que todos os elementos dentro do operador summarize são separados por vírgulas e são agrupados pela mesma coluna, neste caso State. As colunas não nomeadas no summarize
operador são descartadas. Se quiser incluir outras colunas, nomeie-as após 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. Que parte da consulta corresponde a cada coluna? Você pode ver que a
dcount()
função criou uma nova coluna e deu a ela o nome Count. Você também notará que usou esse nome como a coluna para osort
operador na consulta. Quantos tipos diferentes de tempestades ocorreram no Texas?
Utilize o distinct
operador
A consulta anterior retornou uma contagem distinta de 27 tipos diferentes de tempestades no Texas durante o período de tempo coberto por esses dados. Seria interessante detalhar ainda mais e ver os nomes de todos esses tipos de tempestades. Para ver uma lista de cada tipo diferente de evento no Texas, use o distinct()
operador, 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:
Dê uma olhada na lista resultante. Algum dos tipos de tempestade o surpreendeu?