Ćwiczenie — zlicz zdarzenia przy użyciu funkcji count
Możesz użyć zapytania Kusto, aby eksplorować zestawy danych i uzyskiwać szczegółowe informacje. Pamiętaj, że mamy zestaw danych meteorologicznych i chcemy porównać zdarzenia w celu uzyskania szczegółowych informacji z tych danych. W tym miejscu dowiesz się, ile z określonego typu zdarzenia miało miejsce w określonym obszarze.
Korzystanie z funkcji count
Przykładowa baza danych, z których korzystamy, zawiera wpis dla każdego zdarzenia storm w Stanach Zjednoczonych w 2007 r. dla łącznie około 60 tysięcy rekordów.
Aby zgrupować te zdarzenia w fragmenty informacji, użyjesz summarize
operatora . summarize
jest używany dla wszystkich funkcji, które agregują grupy wartości wielu wierszy w celu utworzenia pojedynczej wartości podsumowania. Możesz na przykład podsumować całą tabelę, licząc liczbę wyników przy użyciu następującego zapytania:
Możesz również podsumować dane w grupach podobnych typów zdarzeń, określając sposób grupowania agregacji. Na przykład aby zliczyć zdarzenia według stanu, możesz napisać zapytanie do elementu summarize
count
za pomocą state
polecenia . W rzeczywistości poprzednie zdanie jest bardzo podobne do rzeczywistego zapytania. Użyjesz funkcji agregacji o nazwie count()
, która zlicza liczbę wierszy według grupy. Ta funkcja generuje nową kolumnę, która daje liczbę zdarzeń pogrupowanych według stanu, których nazwa została zmieniona w zapytaniu z domyślnej nazwy count_ na EventCount. Zmiana nazw nowych kolumn jest zalecaną praktyką, aby zapytania i ich wyniki mogły być bardziej czytelne.
Skopiuj i wklej zapytanie do edytora zapytań.
StormEvents | summarize EventCount = count() by State | sort by EventCount
Uruchom zapytanie, wybierając przycisk Uruchom nad oknem zapytania lub naciskając Shift+Enter.
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
dcount()
Korzystanie z funkcji i countif()
Poprzednie zapytanie zwróciło liczbę zdarzeń na stan. Istnieją jednak bardziej zaawansowane sposoby liczenia zdarzeń.
- Można na przykład zliczyć tylko niektóre typy zdarzeń. Funkcja
countif()
zlicza rekordy, dla których predykat ma wartość true. Użycie zapytaniacountif(DamageCrops > 0)
zlicza liczbę rekordów, dla których uszkodzenie upraw było większe niż zero. - Można również liczyć różne typy zdarzeń przy użyciu
dcount()
funkcji .
Utworzyliśmy zapytanie, które używa summarize
operatora z tymi funkcjami zliczanymi, aby odpowiedzieć na następujące pytania:
- Ile zdarzeń burzowych wystąpiło w każdym stanie?
- Ile zdarzeń w każdym stanie spowodowało uszkodzenie?
- Ile różnych typów zdarzeń wystąpiło w każdym stanie?
Zwróć uwagę, że wszystkie elementy operatora sumowania są rozdzielone przecinkami i są pogrupowane według tej samej kolumny, w tym przypadku State. Kolumny, które nie są nazwane w operatorze summarize
, są porzucane. Jeśli chcesz uwzględnić inne kolumny, nadaj im nazwę po kolumnie, w której podsumowano dane.
Uruchom poniższe zapytanie:
StormEvents | summarize count(), EventsWithDamageToCrops = countif(DamageCrops > 0), Count = dcount(EventType) by State | sort by Count
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Zwróć uwagę na nazwy kolumn w wynikach. Która część zapytania odpowiada każdej kolumnie? Widać, że
dcount()
funkcja utworzyła nową kolumnę i nadała jej nazwę Liczba. Zauważysz również, że ta nazwa została użyta jako kolumna operatorasort
w zapytaniu. Ile różnych typów burz miało miejsce w Teksasie?
distinct
Korzystanie z operatora
Poprzednie zapytanie zwróciło odrębną liczbę 27 różnych typów burz w Teksasie w okresie objętym tym danymi. Warto dokładniej przejść do szczegółów i zobaczyć nazwy wszystkich tych typów burz. Aby wyświetlić listę każdego innego typu zdarzenia w Teksasie, użyj distinct()
operatora , który zawiera listę unikatowych wartości określonej kolumny.
Uruchom poniższe zapytanie:
StormEvents | where State == "TEXAS" | distinct EventType | sort by EventType asc
Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:
Przyjrzyj się wynikowej liście. Czy którykolwiek z typów burzy cię zaskoczył?