Exercício - Resumir dados usando funções agregadas

Concluído

Usamos um conjunto de dados meteorológicos para comparar o número de certos tipos de eventos de tempestade em diferentes estados dos EUA para o ano de 2007 e visualizamos os resultados. Aqui, você explorará outras funções de agregação para descrever os dados.

Caracterizar tipos de tempestade usando a avg() função

Na última unidade, você analisou o número de tempestades em função do tempo e os danos causados por essas tempestades. Vejamos outras estatísticas que podem ajudar a caracterizar as próprias tempestades.

Primeiro, você usará a avg() função para calcular os danos médios causados por tempestades em dólares americanos.

A consulta a seguir cria uma coluna calculada usando o extend operador para adicionar todos os valores de danos, neste caso DamageProperty e DamageCrops, em dólares americanos. Em seguida, a consulta filtra eventos que causaram danos maiores que zero. Em seguida, a consulta resume os danos médios criados por cada tipo de tempestade. Finalmente, os resultados são ordenados pela nova coluna de dano médio.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize avg(damage) by EventType
    | sort by avg_damage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Screenshot of avg aggregation function results.

  2. Uma maneira mais concisa de executar essa consulta é usar a avgif() função. Esta função é semelhante à avg() função, mas apenas faz a média dos resultados para os quais o predicado é verdadeiro. A entrada para esta função é a coluna a ser avaliada e a condição na qual avaliar o valor. Assim, a consulta where damage > 0 | summarize avg(damage) by EventType é equivalente a summarize avgif(damage, damage > 0) by EventType.

    Enquanto estamos nisso, vamos limpar os resultados usando a round() função. Esta função arredonda os resultados para o número especificado de dígitos após a vírgula decimal. Neste exemplo, você usará o valor de arredondamento padrão de 0.

    Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | summarize round(avgif(damage, damage > 0)) by EventType
    | sort by avgif_damage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Screenshot of avg aggregation function results second version.

Encontre extremos usando min() e max()

Vejamos agora os extremos de danos.

Para valores máximos ou mínimos absolutos, use as min() funções e max() agregação. Dentro dessas funções, você tem que definir a coluna na qual calcular o valor mínimo ou máximo e o campo no qual agregar os dados. A consulta a seguir baseia-se na coluna calculada damage anteriormente, adicionando min() e max() valores para a mesma coluna.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize MaxDamage=max(damage), MinDamage=min(damage), AverageDamage=avg(damage) by EventType
    | sort by MaxDamage
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Screenshot of max aggregation function results.

  2. Veja os resultados. Observe que, para tornar os nomes das colunas mais amigáveis, você renomeou as colunas resumidas dentro da consulta para MinDamage e MaxDamage.

  3. Tente alterar a consulta para usar as minif() funções e maxif() . Essas funções são semelhantes às min() funções e max() , mas só retornam o mínimo ou máximo da expressão fornecida para registros onde o predicado retorna true. Da mesma forma, você pode usar a função para retornar a sumif() soma da expressão fornecida para registros em que o predicado retorna true.

Utilizar a função percentiles()

Até agora, você calculou os valores mínimos, máximos e médios de danos causados por cada evento. Para completar a imagem da distribuição desses valores, pode ser útil calcular os percentis. Usando a função, você pode definir os dados de entrada e os percentis a percentiles() serem calculados. No exemplo a seguir, você calculará os valores de dano dos percentis 5, 20, 50, 80 e 95 para cada tipo de evento.

Os percentis, que representam uma distribuição de frequência, não devem ser confundidos com percentagens, que são uma proporção de um todo.

  1. Execute a seguinte consulta:

    Executar a consulta

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize percentiles(damage, 5, 20, 50, 80, 95) by EventType
    | sort by EventType asc
    

    Você deve obter resultados parecidos com a seguinte imagem:

    Screenshot of percentiles aggregation function results.

  2. Veja os resultados. Consegue identificar os danos medianos causados pelas inundações? O valor mediano é igual ao percentil 50.