Ćwiczenie — podsumowywanie danych przy użyciu funkcji agregujących

Ukończone

Użyliśmy zestawu danych meteorologicznych, aby porównać liczbę niektórych rodzajów zdarzeń burzowych w różnych stanach USA w roku 2007 i zwizualizować wyniki. W tym miejscu poznasz inne funkcje agregacji, aby opisać dane.

Scharakteryzowanie typów burzy przy użyciu avg() funkcji

W ostatniej lekcji przyjrzeliśmy się liczbie burz jako funkcji czasu i szkód spowodowanych przez te burze. Przyjrzyjmy się innym statystykom, które mogą pomóc scharakteryzować same burze.

Najpierw użyjesz avg() funkcji , aby obliczyć średnie szkody spowodowane przez burze w dolarach amerykańskich.

Poniższe zapytanie tworzy kolumnę obliczeniową przy użyciu operatora , extend aby dodać wszystkie wartości szkód — w tym przypadku DamageProperty i DamageCrops — w dolarach amerykańskich. Następnie zapytanie filtruje pod kątem zdarzeń, które spowodowały uszkodzenie większe niż zero. Następnie zapytanie podsumowuje średnie uszkodzenia każdego typu burzy utworzonego. Na koniec wyniki są sortowane według nowej średniej kolumny uszkodzeń.

  1. Uruchom poniższe zapytanie:

    Uruchamianie zapytania

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize avg(damage) by EventType
    | sort by avg_damage
    

    Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:

    Zrzut ekranu przedstawiający wyniki funkcji agregacji średniej.

  2. Bardziej zwięzłym sposobem uruchamiania avgif() tego zapytania jest użycie funkcji . Ta funkcja jest podobna avg() do funkcji, ale tylko średnie wyniki, dla których predykat ma wartość true. Dane wejściowe dla tej funkcji to kolumna do oceny i warunek, na którym ma być obliczona wartość. Dlatego zapytanie where damage > 0 | summarize avg(damage) by EventType jest równoważne .summarize avgif(damage, damage > 0) by EventType

    Gdy jesteśmy w nim, wyczyśćmy wyniki przy użyciu round() funkcji . Ta funkcja zaokrągla wyniki do określonej liczby cyfr po przecinku dziesiętny. W tym przykładzie użyjesz domyślnej wartości zaokrąglania 0.

    Uruchom poniższe zapytanie:

    Uruchamianie zapytania

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | summarize round(avgif(damage, damage > 0)) by EventType
    | sort by avgif_damage
    

    Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:

    Zrzut ekranu przedstawiający wyniki funkcji agregacji średniej, drugą wersję.

Znajdowanie skrajności przy użyciu i min()max()

Przyjrzyjmy się teraz skrajnym szkodom.

W przypadku bezwzględnych wartości maksymalnych lub minimalnych użyj min() funkcji agregacji i max() . W ramach tych funkcji należy zdefiniować kolumnę, na której ma być obliczana minimalna lub maksymalna wartość oraz pole, na którym mają być agregowane dane. Poniższe zapytanie opiera się na wcześniej obliczonej damage kolumnie, dodając min() wartości i max() dla tej samej kolumny.

  1. Uruchom poniższe zapytanie:

    Uruchamianie zapytania

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize MaxDamage=max(damage), MinDamage=min(damage), AverageDamage=avg(damage) by EventType
    | sort by MaxDamage
    

    Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:

    Zrzut ekranu przedstawiający maksymalne wyniki funkcji agregacji.

  2. Przyjrzyj się wynikom. Zwróć uwagę, że aby nazwy kolumn są bardziej przyjazne, zmieniono nazwy podsumowanych kolumn w zapytaniu na MinDamage i MaxDamage.

  3. Spróbuj zmienić zapytanie, aby używać minif() funkcji i maxif() . Te funkcje są podobne do min() funkcji i max() , ale zwracają tylko minimalną lub maksymalną wartość podanego wyrażenia dla rekordów, w których predykat zwraca wartość true. Podobnie można użyć sumif() funkcji , aby zwrócić sumę podanego wyrażenia dla rekordów, w których predykat zwraca wartość true.

Korzystanie z funkcji percentiles()

Do tej pory obliczyliśmy wartości minimalne, maksymalne i średnie szkody spowodowane przez każde zdarzenie. Aby ukończyć obraz rozkładu tych wartości, warto obliczyć percentyle. percentiles() Za pomocą funkcji można zdefiniować dane wejściowe i percentyle do obliczenia. W poniższym przykładzie obliczysz wartości 5, 20, 50, 80 i 95. percentyla uszkodzenia dla każdego typu zdarzenia.

Percentyle, które reprezentują rozkład częstotliwości, nie powinny być mylone z wartościami procentowymi, które są proporcją całości.

  1. Uruchom poniższe zapytanie:

    Uruchamianie zapytania

    StormEvents
    | extend damage = DamageProperty + DamageCrops
    | where damage > 0
    | summarize percentiles(damage, 5, 20, 50, 80, 95) by EventType
    | sort by EventType asc
    

    Powinny zostać wyświetlone wyniki, które wyglądają jak na poniższej ilustracji:

    Zrzut ekranu przedstawiający wyniki funkcji agregacji percentylu.

  2. Przyjrzyj się wynikom. Czy można zidentyfikować mediany szkód spowodowanych przez powodzie? Mediana jest równa 50. percentylowi.