operator podsumowania

Tworzy tabelę, która agreguje zawartość tabeli wejściowej.

Składnia

T| summarize [ SummarizeParameters ] [[Column=] Agregacja [, ...]] [ [Kolumna=] GroupExpression [,by ...]]

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Kolumna string Nazwa kolumny wyników. Wartość domyślna to nazwa pochodząca z wyrażenia.
Agregacja string ✔️ Wywołanie funkcji agregacji , takiej jak count() lub avg(), z nazwami kolumn jako argumentami.
GroupExpression Wartość skalarna ✔️ Wyrażenie skalarne, które może odwoływać się do danych wejściowych. Dane wyjściowe będą miały dowolną liczbę rekordów, ponieważ istnieją różne wartości wszystkich wyrażeń grupy.
SummarizeParameters string Zero lub więcej parametrów rozdzielanych spacjami w postaci wartości nazwy=, która kontroluje zachowanie. Zobacz obsługiwane parametry.

Uwaga

Gdy tabela wejściowa jest pusta, dane wyjściowe zależą od tego, czy jest używana funkcja GroupExpression :

  • Jeśli parametr GroupExpression nie zostanie podany, dane wyjściowe będą pojedynczym (pustym) wierszem.
  • Jeśli zostanie podana wartość GroupExpression , dane wyjściowe nie będą miały wierszy.

Obsługiwane parametry

Nazwa Opis
hint.num_partitions Określa liczbę partycji używanych do współużytkowania obciążenia zapytania w węzłach klastra. Zobacz zapytanie shuffle
hint.shufflekey=<key> shufflekey Zapytanie współudzieli obciążenie zapytania w węzłach klastra przy użyciu klucza do partycjonowania danych. Zobacz zapytanie shuffle
hint.strategy=shuffle shuffle Zapytanie strategii współdzieli obciążenie zapytania w węzłach klastra, gdzie każdy węzeł będzie przetwarzać jedną partycję danych. Zobacz zapytanie shuffle

Zwraca

Wiersze wejściowe są rozmieszczane w grupach o tych samych wartościach by wyrażeń. Następnie określone funkcje agregacji są obliczane dla każdej grupy, tworząc wiersz dla każdej grupy. Wynik zawiera kolumny, a także co najmniej jedną kolumnę by dla każdej obliczonej agregacji. (Niektóre funkcje agregacji zwracają wiele kolumn).

Wynik zawiera tyle wierszy, ile istnieje różnych kombinacji by wartości (które mogą być zerowe). Jeśli nie podano kluczy grupy, wynik ma jeden rekord.

Aby podsumować zakresy wartości liczbowych, użyj polecenia bin() , aby zmniejszyć zakresy do wartości dyskretnych.

Uwaga

  • Chociaż można podać dowolne wyrażenia zarówno dla wyrażeń agregacji, jak i grupowania, bardziej wydajne jest użycie prostych nazw kolumn lub zastosowanie bin() do kolumny liczbowej.
  • Automatyczne przedziały godzinowe dla kolumn daty/godziny nie są już obsługiwane. Zamiast tego należy użyć jawnego kwantowania. Na przykład summarize by bin(timestamp, 1h).

Wartości domyślne agregacji

Poniższa tabela zawiera podsumowanie wartości domyślnych agregacji:

Operator Wartość domyślna
count(), countif(), dcount(), dcountif(), count_distinct(), sum(), sumif(), variance(), varianceif(), stdev(), stdevif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() pusta tablica dynamiczna ([])
Wszystkie inne null

Uwaga

Podczas stosowania tych agregacji do jednostek, które zawierają wartości null, wartości null są ignorowane i nie są uwzględniane w obliczeniu. Aby zapoznać się z przykładami, zobacz Wartości domyślne agregacji.

Przykłady

Podsumuj cenę owoców i dostawcy.

Unikatowa kombinacja

Poniższe zapytanie określa, jakie unikatowe kombinacje State i EventType istnieją dla burz, które spowodowały bezpośrednie szkody. Nie ma żadnych funkcji agregacji, po prostu grupuj według kluczy. Dane wyjściowe będą po prostu pokazywać kolumny dla tych wyników.

StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType

Dane wyjściowe

W poniższej tabeli przedstawiono tylko pierwsze 5 wierszy. Aby wyświetlić pełne dane wyjściowe, uruchom zapytanie.

Stan Typ zdarzenia
TEXAS Burza wiatru
TEXAS Powodzie błyskawiczne
TEXAS Pogoda zimowa
TEXAS Wysoki wiatr
TEXAS Powódź
... ...

Minimalna i maksymalna sygnatura czasowa

Znajduje minimalne i maksymalne ulewne burze deszczowe na Hawajach. Nie ma klauzuli group-by, więc w danych wyjściowych znajduje się tylko jeden wiersz.

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

Dane wyjściowe

Min. Maks.
01:08:00 11:55:00

Zliczenie

Utwórz wiersz dla każdego kontynentu z liczbą miast, w których występują działania. Ponieważ istnieje kilka wartości dla "kontynentu", w klauzuli "by" nie jest wymagana żadna funkcja grupowania:

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

Dane wyjściowe

W poniższej tabeli przedstawiono tylko pierwsze 5 wierszy. Aby wyświetlić pełne dane wyjściowe, uruchom zapytanie.

Stan TypesOfStorms
TEXAS 27
KALIFORNII 26
PENNSYLVANIA 25
GRUZJA 24
ILLINOIS 23
... ...

Histogram

Poniższy przykład oblicza typy zdarzeń burzy histogramu, które miały burze trwające dłużej niż 1 dzień. Ponieważ Duration ma wiele wartości, użyj polecenia bin() , aby pogrupować swoje wartości w interwały 1-dniowe.

StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length

Dane wyjściowe

Typ zdarzenia Długość EventCount
Susza 30.00:00:00 1646
Pożary lasów 30.00:00:00 11
Ciepło 30.00:00:00 14
Powódź 30.00:00:00 20
Ulewny deszcz 29.00:00:00 42
... ... ...

Agreguje wartości domyślne

Jeśli dane wejściowe summarize operatora mają co najmniej jeden pusty klucz grupowania według, jego wynik jest również pusty.

Jeśli dane wejściowe summarize operatora nie mają pustego klucza grupowania, wynikiem są wartości domyślne agregacji używanych w sekcji summarize Aby uzyskać więcej informacji, zobacz Domyślne wartości agregacji.

datatable(x:long)[]
| summarize any_x=take_any(x), arg_max_x=arg_max(x, *), arg_min_x=arg_min(x, *), avg(x), buildschema(todynamic(tostring(x))), max(x), min(x), percentile(x, 55), hll(x) ,stdev(x), sum(x), sumif(x, x > 0), tdigest(x), variance(x)

Dane wyjściowe

any_x arg_max_x arg_min_x avg_x schema_x max_x min_x percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
NaN 0 0 0 0

Wynik avg_x(x) jest NaN spowodowany podziałem przez 0.

datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)

Dane wyjściowe

count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)

Dane wyjściowe

set_x list_x
[] []

Agregacja średnia sumuje wszystkie wartości inne niż null i zlicza tylko te, które uczestniczyły w obliczeniu (nie uwzględniają wartości null).

range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)

Dane wyjściowe

sum_y avg_y
15 5

Zwykła liczba będzie zliczać wartości null:

range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)

Dane wyjściowe

count_y
2
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize make_set(y), make_set(y)

Dane wyjściowe

set_y set_y1
[5.0] [5.0]