Exercice : Filtrer les données à l’aide de l’opérateur where

Effectué

Rappelez-vous que vous avez filtré certaines colonnes dans les résultats affichés. Dans cette unité, vous allez apprendre à répondre à des questions sur les types d’événement météorologique qui ont eu lieu dans différentes régions ou à diverses périodes ainsi que sur les types d’événement qui ont occasionné des dégâts.

Utilisez l’opérateur where

Jusqu’à présent, tous les opérateurs que vous avez utilisés ont retourné des colonnes spécifiques. Intéressons-nous maintenant à des lignes spécifiques des données.

L’opérateur where filtre des résultats qui remplissent une certaine condition. Dans ce premier exemple, vous allez comparer une colonne d’entiers à une valeur minimale à l’aide de l’opérateur numérique supérieur à (>). Plus précisément, vous voulez uniquement voir les tempêtes qui ont occasionné des dégâts matériels, vous allons donc chercher les lignes de données dont la valeur de dommages aux biens est supérieure à zéro.

  1. Exécutez la requête suivante :

    Exécuter la requête

    StormEvents
    | where DamageProperty > 0
    | project State, EventType, DamageProperty
    | take 10
    
  2. Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la requête d’un opérateur where avec un opérateur numérique supérieur à zéro.

  3. Notez que toutes les lignes retournées présentent, en fait, des valeurs DamageProperty supérieures à zéro.

  4. De même, vous pouvez filtrer le lieu où un événement s’est produit au-delà d’un certain nombre de jours. Par exemple, exécutez la requête suivante, où 365d signifie 365 jours :

    Exécuter la requête

    StormEvents
    | where DamageProperty > 0
    | where StartTime > ago(365d)
    | project State, EventType, DamageProperty
    
  5. Notez que cette requête ne retourne aucun résultat. Dans la mesure où les données datent de 2007, il n’existe aucun enregistrement sur l’année passée.

Filtrer à l’aide d’une valeur string

Il semble que de nombreux types de tempête aient causé des dégâts aux États-Unis. Intéressons-nous de plus près aux tempêtes qui se sont produites à un certain endroit, comme l’État de Floride.

  1. Exécutez la requête suivante, qui utilise un deuxième opérateur where avec la valeur de chaîne "FLORIDA" :

    Exécuter la requête

    StormEvents
    | where DamageCrops > 0
    | where State == "FLORIDA"
    | project State, EventType, DamageCrops
    
  2. Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la requête pour deux opérateurs where.

  3. Notez que tous les enregistrements retournés par cette requête se trouvent en Floride et que les dégâts occasionnés aux cultures sont tous supérieurs à zéro.

Filtrer à l’aide de l’opérateur has

L’un des types d’événement dans les résultats de la dernière requête s’appelle Thunderstorm Wind (Orage avec vent violent). Voyons s’il existe d’autres types de vent qui ont occasionné des dégâts matériels en Floride. Nous allons rechercher une correspondance de la chaîne wind à l’aide de l’opérateur has. L’opérateur has permet de rechercher une correspondance d’un mot complet sans respect de la casse.

  1. Exécutez la requête suivante :

    Exécuter la requête

    StormEvents
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | where EventType has "wind"
    | project StartTime, EventType, DamageProperty
    
  2. Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la requête pour les opérateurs where et has.

  3. Notez que dans les résultats, les événements tels que les tornades n’apparaissent plus, alors que les types d’événements Thunderstorm Wind (Orage avec vent violent) et Strong Wind (Vent fort) apparaissent.

L’opérateur contains est similaire à has, mais il permet de rechercher des correspondances avec des sous-chaînes. Par exemple, la requête suivante retourne des résultats tels que Freezing fog (Brouillard givrant) et Frost/Freeze (Gel/Givre).

StormEvents | where EventType contains "free"

L’opérateur has est plus performant que l’opérateur contains. Veillez donc à utiliser has chaque fois que vous avez le choix entre les deux.

Filtrer les valeurs datetime

Examinons de plus près les dégâts causés au cours de la première moitié de l’année civile. Il peut être utile de limiter votre recherche aux événements situés dans un intervalle de temps spécifique. Certaines interfaces avec le langage de requête Kusto ont un sélecteur d’intervalle de temps, mais d’autres vous obligent à incorporer le filtre de dates dans la requête elle-même.

Dans la mesure où les intervalles de temps sont limités par deux extrêmes, il est plus efficace de construire une requête dans laquelle vous choisissez une valeur comprise entre ces deux dates.

La syntaxe qui permet de construire cette plage de dates est la suivante :

where type de date between (datetime(valeur)..datetime(valeur))

  1. Incorporons cette plage datetime dans un genre de requête que vous avez déjà vu. Exécutez la requête suivante :

    Exécuter la requête

    StormEvents
    | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01))
    | where DamageProperty > 0
    | where State == "FLORIDA"
    | project StartTime, EventType, DamageProperty
    | take 50
    
  2. Vous devez obtenir des résultats qui ressemblent à l’image suivante :

    Capture d’écran des résultats de la requête pour les opérateurs where qui incluent un intervalle de temps.

  3. Notez que toutes les dates sont comprises dans la première moitié de l’année, c’est-à-dire les mois un à six. Vous pouvez également noter que même si vous avez sélectionné des événements dans l’état de Floride, cet état n’apparaît pas en tant que colonne de sortie car il n’a pas été spécifié dans l’opérateur project.