Exercice : Filtrer les données à l’aide de l’opérateur where
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.
Exécutez la requête suivante :
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
Vous devez obtenir des résultats qui ressemblent à l’image suivante :
Notez que toutes les lignes retournées présentent, en fait, des valeurs DamageProperty supérieures à zéro.
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 :StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
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.
Exécutez la requête suivante, qui utilise un deuxième opérateur
where
avec la valeur de chaîne"FLORIDA"
:StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
Vous devez obtenir des résultats qui ressemblent à l’image suivante :
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.
Exécutez la requête suivante :
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
Vous devez obtenir des résultats qui ressemblent à l’image suivante :
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 datebetween
(datetime(
valeur)..datetime(
valeur))
Incorporons cette plage
datetime
dans un genre de requête que vous avez déjà vu. Exécutez la requête suivante :StormEvents | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01)) | where DamageProperty > 0 | where State == "FLORIDA" | project StartTime, EventType, DamageProperty | take 50
Vous devez obtenir des résultats qui ressemblent à l’image suivante :
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
.