Oefening: gegevens filteren met behulp van de where-operator
Zoals u weet, hebt u bepaalde kolommen gefilterd in of uit de weergegeven resultaten. In deze les leert u hoe u vragen kunt beantwoorden over welke soorten meteorologische gebeurtenissen hebben plaatsgevonden in verschillende regio's of periodes, en welke soorten gebeurtenissen schade hebben veroorzaakt.
where
De operator gebruiken
Tot nu toe hebben alle operators die u hebt gebruikt, geselecteerde kolommen geretourneerd. Laten we nu eens kijken naar specifieke rijen van de gegevens.
De where
operator filtert resultaten die voldoen aan een bepaalde voorwaarde. In dit eerste voorbeeld vergelijkt u een kolom met gehele getallen met een minimumwaarde met behulp van de numerieke operator groter dan (>
). In het bijzonder wilt u alleen stormen zien die beschadigde eigenschap hebben, dus bekijkt u rijen met gegevens waar de schade aan eigendommen groter is dan nul.
Voer de volgende query uit.
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
U krijgt resultaten die eruitzien als de volgende afbeelding:
U ziet dat alle geretourneerde rijen in feite DamageProperty-waarden hebben die groter zijn dan nul.
Op dezelfde manier kunt u filteren waar de tijd van een gebeurtenis meer dan een bepaald aantal dagen geleden heeft plaatsgevonden. Voer bijvoorbeeld de volgende query uit, waarbij
365d
dit 365 dagen betekent:StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
U ziet dat deze query geen resultaten oplevert. Omdat de gegevens afkomstig zijn uit 2007, zijn er geen records uit het afgelopen jaar.
Filteren met behulp van een tekenreekswaarde
Het lijkt erop dat een aantal soorten stormen schade hebben veroorzaakt door heel de VS. Laten we dat beperken tot stormen die zich op een bepaalde locatie hebben voorgedaan, zoals de staat Florida.
Voer de volgende query uit, die gebruikmaakt van een tweede
where
operator met de tekenreekswaarde"FLORIDA"
:StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
U krijgt resultaten die eruitzien als de volgende afbeelding:
U ziet dat alle records die door deze query worden geretourneerd, afkomstig zijn uit Florida en een bijsnijdschade hebben die groter is dan nul.
Filteren met behulp van de has
operator
Een van de gebeurtenistypen in de resultaten van de laatste query heet Thunderstorm Wind. Laten we eens kijken of er andere soorten wind zijn die schade aan eigendommen in Florida hebben veroorzaakt. We zoeken naar een tekenreeksovereenkomst van met behulp van wind
de has
operator. De has
operator is een hoofdlettergevoelige zoekopdracht die overeenkomt met een volledige term.
Voer de volgende query uit.
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
U krijgt resultaten die eruitzien als de volgende afbeelding:
U ziet in de resultaten dat gebeurtenissen zoals tornado's niet meer verschijnen, maar De gebeurtenistypen Thunderstorm Wind en Strong Wind worden wel weergegeven.
De contains
operator is vergelijkbaar met has
, maar komt overeen met elke subtekenreeks. De volgende query retourneert bijvoorbeeld resultaten zoals Vriesmist en Vorst/Blokkeren.
StormEvents | where EventType contains "free"
De has
operator is beter presterend dan de contains
operator, dus u moet overal gebruiken has
waar u een keuze hebt tussen de twee.
Filteren op datetime
waarden
Laten we eens kijken naar de schade die in de eerste helft van het kalenderjaar is aangericht. Het kan handig zijn om uw zoekopdracht te beperken tot gebeurtenissen binnen een bepaald tijdsbereik. Sommige interfaces met Kusto-querytaal een vervolgkeuzelijst hebben, maar voor andere interfaces moet u het datumfilter opnemen in de query zelf.
Omdat tijdsbereiken worden gebonden door twee uitersten, is het het meest efficiënt om een query te maken waarin u een waarde kiest tussen deze twee keer.
De syntaxis voor het samenstellen van dit datumbereik is als volgt:
where
Tijdbetween
(datetime(
waardewaarde)..datetime(
))
Laten we dit
datetime
bereik opnemen in een soort query die u al hebt gezien. Voer de volgende query uit.StormEvents | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01)) | where DamageProperty > 0 | where State == "FLORIDA" | project StartTime, EventType, DamageProperty | take 50
U krijgt resultaten die eruitzien als de volgende afbeelding:
U ziet dat alle datums binnen de eerste helft van het jaar liggen, maanden één tot zes. U ziet mogelijk ook dat, ook al hebt u gebeurtenissen uit de staat Florida geselecteerd, de status niet wordt weergegeven als een uitvoerkolom, omdat deze niet is opgegeven in de
project
operator.