Exercice - Totaliser des données à l’aide de fonctions d’agrégation

Effectué

Nous avons utilisé un jeu de données météorologiques pour comparer le nombre de certains types d’événements de tempête dans différents états américains pour l’année 2007 et visualiser les résultats. Ici, vous allez explorer d’autres fonctions d’agrégation pour décrire les données.

Caractérisez les types de tempêtes à l’aide de la fonction avg()

Dans la dernière unité, vous avez examiné le nombre de tempêtes en fonction du temps et des dommages causés par ces tempêtes. Examinons d’autres statistiques qui peuvent aider à caractériser eux-mêmes les tempêtes.

Tout d’abord, vous allez utiliser la fonction avg() pour calculer les dommages moyens causés par les tempêtes en dollars américains.

La requête suivante crée une colonne calculée à l’aide de l’opérateur extend pour ajouter toutes les valeurs de dommages : dans ce cas DamageProperty et DamageCrops, en dollars américains. La requête filtre ensuite les événements qui ont causé des dommages supérieurs à zéro. Ensuite, la requête récapitule les dommages moyens créés par chaque type de tempête. Enfin, les résultats sont triés par la nouvelle colonne de dommages moyen.

  1. Exécutez la requête suivante :

    Exécuter la requête

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

    Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la fonction d’agrégation moy.

  2. Un moyen plus concis d’exécuter cette requête consiste à utiliser la fonction avgif(). Cette fonction est similaire à la fonction avg(), mais uniquement les résultats moyens pour lesquels le prédicat est vrai. L’entrée de cette fonction est la colonne à évaluer et la condition sur laquelle évaluer la valeur. Par conséquent, la requête where damage > 0 | summarize avg(damage) by EventType équivaut à summarize avgif(damage, damage > 0) by EventType.

    Pendant que nous y sommes, nous allons nettoyer les résultats à l’aide de la fonction round(). Cette fonction arrondit les résultats au nombre spécifié de chiffres après le point décimal. Dans cet exemple, vous allez utiliser la valeur d’arrondi par défaut de 0.

    Exécutez la requête suivante :

    Exécuter la requête

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

    Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la fonction d’agrégation moy., seconde version.

Rechercher des extrêmes à l’aide de min() et max()

Examinons maintenant les dommages extrêmes.

Pour les valeurs maximales absolues ou minimales, utilisez les fonctions d’agrégation min() et max(). Dans ces fonctions, vous devez définir la colonne sur laquelle calculer la valeur minimale ou maximale et le champ sur lequel agréger les données. La requête suivante s’appuie sur la colonne calculée damage précédemment, l’ajout des valeurs min() et max() pour la même colonne.

  1. Exécutez la requête suivante :

    Exécuter la requête

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

    Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la fonction d’agrégation max.

  2. Regardez les résultats. Notez que pour rendre les noms de colonnes plus convivial, vous avez renommé les colonnes résumées dans la requête en MinDamage et MaxDamage.

  3. Essayez de modifier la requête pour utiliser les fonctions minif() et maxif(). Ces fonctions sont similaires aux fonctions min() et max() mais retournent uniquement la valeur minimale ou maximale de l’expression fournie pour les enregistrements où le prédicat retourne true. De même, vous pouvez utiliser la fonction sumif() pour renvoyer la somme de l’expression fournie pour les enregistrements où le prédicat retourne true.

Utiliser la fonction percentiles()

Jusqu’à présent, vous avez calculé les valeurs minimales, maximales et moyennes des dommages causés par chaque événement. Pour terminer l’image de la distribution de ces valeurs, il peut être utile de calculer les centiles. À l’aide de la fonction percentiles(), vous pouvez définir les données d’entrée et les centiles à calculer. Dans l’exemple suivant, vous allez calculer les valeurs de 5e, 20e, 50e, 80e et 95e centile pour chaque type d’événement.

Les centiles, qui représentent une distribution de fréquence, ne doivent pas être confondus avec les pourcentages, qui sont une proportion d’un ensemble.

  1. Exécutez la requête suivante :

    Exécuter la requête

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

    Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la fonction d’agrégation centiles.

  2. Regardez les résultats. Pouvez-vous identifier les dommages médians causés par les inondations ? La valeur médiane est égale au 50e centile.