Ćwiczenie — filtrowanie danych przy użyciu operatora where
Pamiętaj, że niektóre kolumny zostały przefiltrowane w wyświetlonych wynikach lub poza nie. W tej lekcji dowiesz się, jak odpowiedzieć na pytania dotyczące tego, jakie rodzaje zdarzeń meteorologicznych miały miejsce w różnych regionach lub przedziałach czasu oraz jakie typy zdarzeń spowodowały szkody.
where
Korzystanie z operatora
Do tego momentu wszystkie użyte operatory zwróciły wybrane kolumny. Teraz przyjrzyjmy się konkretnym wierszom danych.
Operator where
filtruje wyniki spełniające określony warunek. W tym pierwszym przykładzie porównasz kolumnę całkowitą z minimalną wartością przy użyciu operatora liczbowego większego niż (>
). W szczególności chcesz zobaczyć tylko burze, które uszkodziły właściwość, więc przyjrzysz się wierszom danych, w których uszkodzenie nieruchomości jest większe niż zero.
Uruchom poniższe zapytanie:
StormEvents | where DamageProperty > 0 | project State, EventType, DamageProperty | take 10
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Zwróć uwagę, że wszystkie zwrócone wiersze mają w rzeczywistości wartości DamageProperty większe niż zero.
Podobnie można filtrować czas wystąpienia zdarzenia więcej niż określoną liczbę dni temu. Na przykład uruchom następujące zapytanie, gdzie
365d
oznacza 365 dni:StormEvents | where DamageProperty > 0 | where StartTime > ago(365d) | project State, EventType, DamageProperty
Zwróć uwagę, że to zapytanie nie zwraca żadnych wyników. Ponieważ dane pochodzą z 2007 r., nie ma żadnych rekordów z ostatniego roku.
Filtrowanie przy użyciu wartości ciągu
Wygląda na to, że kilka rodzajów burz spowodowały szkody w całym USA. Zawęźmy to do burz, które miały miejsce w określonej lokalizacji, jak stan Florydy.
Uruchom następujące zapytanie, które używa drugiego
where
operatora z wartością"FLORIDA"
ciągu :StormEvents | where DamageCrops > 0 | where State == "FLORIDA" | project State, EventType, DamageCrops
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Zwróć uwagę, że wszystkie rekordy zwrócone z tego zapytania pochodzą z Florydy i mają uszkodzenia upraw większe niż zero.
Filtrowanie przy użyciu has
operatora
Jednym z typów zdarzeń w wynikach ostatniego zapytania jest nazwany Thunderstorm Wind. Sprawdźmy, czy istnieją inne rodzaje wiatru, które spowodowały szkody w nieruchomości na Florydzie. Wyszukamy dopasowanie wind
ciągu przy użyciu has
operatora . Operator has
jest wyszukiwaniem bez uwzględniania wielkości liter, które pasuje do pełnego terminu.
Uruchom poniższe zapytanie:
StormEvents | where DamageProperty > 0 | where State == "FLORIDA" | where EventType has "wind" | project StartTime, EventType, DamageProperty
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Zwróć uwagę, że w wynikach zdarzenia takie jak tornada nie pojawiają się już, ale pojawiają się typy zdarzeń Thunderstorm Wind i Strong Wind .
Operator contains
jest podobny do has
, ale pasuje do dowolnego podciągu. Na przykład następujące zapytanie zwraca wyniki, takie jak Mroźna mgła i Frost/Freeze.
StormEvents | where EventType contains "free"
Operator has
jest bardziej wydajny niż contains
operator, dlatego należy użyć has
niezależnie od tego, gdzie masz wybór między nimi.
Filtrowanie według datetime
wartości
Przyjrzyjmy się bliżej szkodom wyrządzonym w pierwszej połowie roku kalendarzowego. Może być przydatne ograniczenie wyszukiwania do zdarzeń w określonym zakresie czasu. Niektóre interfejsy z język zapytań Kusto mają selektor czasu listy rozwijanej, ale inne wymagają włączenia filtru daty do samego zapytania.
Ponieważ zakresy czasu są ograniczone przez dwie skrajności, najbardziej wydajne jest konstruowanie zapytania, w którym wybierasz wartość między tymi dwoma razy.
Składnia tworzenia tego zakresu dat jest następująca:
where
Godzinabetween
(datetime(
wartość wartości)..datetime(
))
Dołączmy ten
datetime
zakres do rodzaju zapytania, które zostało już wyświetlone. Uruchom poniższe zapytanie:StormEvents | where StartTime between (datetime(2007-01-01)..datetime(2007-06-01)) | where DamageProperty > 0 | where State == "FLORIDA" | project StartTime, EventType, DamageProperty | take 50
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Zwróć uwagę, że wszystkie daty znajdują się w pierwszej połowie roku, od jednego do sześciu miesięcy. Możesz również zauważyć, że mimo że wybrano zdarzenia ze stanu Floryda, stan nie jest wyświetlany jako kolumna danych wyjściowych, ponieważ nie został określony w
project
operatorze.