Sdílet prostřednictvím


Operátor summarize

Vytvoří tabulku, která agreguje obsah vstupní tabulky.

Syntaxe

T | summarize [ SummarizeParameters ] [[Sloupec =] Agregace [, ...]] [by [Sloupec = ] GroupExpression [, ...]]

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Type Požadováno Popis
Sloupec string Název sloupce výsledků Výchozí hodnota je název odvozený z výrazu.
Agregace string ✔️ Volání agregační funkce , například count() nebo avg(), s názvy sloupců jako argumenty.
GroupExpression skalární ✔️ Skalární výraz, který může odkazovat na vstupní data. Výstup bude obsahovat tolik záznamů, kolik obsahuje jedinečné hodnoty všech výrazů skupiny.
SummarizeParameters string Nula nebo více parametrů oddělených mezerami ve formě Hodnoty názvu = , které řídí chování. Viz podporované parametry.

Poznámka:

Pokud je vstupní tabulka prázdná, výstup závisí na tom, jestli se používá GroupExpression :

  • Pokud groupExpression není zadaný, bude výstup jedním (prázdným) řádkem.
  • Pokud je zadaný GroupExpression , výstup nebude obsahovat žádné řádky.

Podporované parametry

Název Popis
hint.num_partitions Určuje počet oddílů použitých ke sdílení zatížení dotazu na uzlech clusteru. Zobrazit dotaz náhodného prohazování
hint.shufflekey=<key> Dotaz shufflekey sdílí zatížení dotazu na uzly clusteru pomocí klíče pro dělení dat. Zobrazit dotaz náhodného prohazování
hint.strategy=shuffle shuffle Dotaz strategie sdílí zatížení dotazu na uzly clusteru, kde každý uzel zpracuje jeden oddíl dat. Zobrazit dotaz náhodného prohazování

Návraty

Vstupní řádky jsou uspořádány do skupin se stejnými by hodnotami výrazů. Pak se zadané agregační funkce počítají přes každou skupinu a vytvoří řádek pro každou skupinu. Výsledek obsahuje by sloupce a také alespoň jeden sloupec pro každou vypočítanou agregaci. (Některé agregační funkce vracejí více sloupců.)

Výsledek má tolik řádků, kolik existuje různých kombinací by hodnot (což může být nula). Pokud nejsou k dispozici žádné klíče skupiny, výsledek obsahuje jeden záznam.

Chcete-li shrnout rozsahy číselných hodnot, použijte bin() k omezení rozsahů na diskrétní hodnoty.

Poznámka:

  • I když pro agregační i seskupovací výrazy můžete zadat libovolné výrazy, je efektivnější použít jednoduché názvy sloupců nebo použít bin() u číselného sloupce.
  • Automatické hodinové intervaly sloupců data a času se už nepodporují. Místo toho použijte explicitní binning. Například summarize by bin(timestamp, 1h).

Výchozí hodnoty agregací

Následující tabulka shrnuje výchozí hodnoty agregací:

Operátor Default value
count(), countif(), , dcount(), count_distinct()varianceif()dcountif()sum()sumif()variance(), stdev()stdevif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), , make_set()make_set_if() prázdné dynamické pole ([])
Všichni ostatní null

Poznámka:

Při použití těchto agregací u entit, které obsahují hodnoty null, se hodnoty null ignorují a nefaktorují do výpočtu. Příklady najdete v tématu Agregace výchozích hodnot.

Příklady

Shrňte cenu podle ovoce a dodavatele.

Jedinečná kombinace

Následující dotaz určuje, jaké jedinečné kombinace State a EventType existují pro bouře, které způsobily přímé zranění. Neexistují žádné agregační funkce, pouze klíče seskupené podle. Výstup jenom zobrazí sloupce pro tyto výsledky.

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

Výstup

Následující tabulka zobrazuje pouze prvních 5 řádků. Pokud chcete zobrazit úplný výstup, spusťte dotaz.

State Typ události
TEXAS Větrná bouře
TEXAS Velká voda
TEXAS Počasí v zimě
TEXAS Velký vítr
TEXAS Povodeň
... ...

Minimální a maximální časové razítko

Najde minimální a maximální těžké dešťové bouře na Havaji. Klauzule group-by neexistuje, takže ve výstupu je jenom jeden řádek.

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

Výstup

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

Počet jedinečných položek

Vytvořte řádek pro každý kontinent a zobrazte počet měst, ve kterých se aktivity vyskytují. Vzhledem k tomu, že existuje několik hodnot pro "kontinent", není v klauzuli 'by' potřeba žádná funkce seskupení:

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

Výstup

Následující tabulka zobrazuje pouze prvních 5 řádků. Pokud chcete zobrazit úplný výstup, spusťte dotaz.

State TypesOfStorms
TEXAS 27
KALIFORNIE 26
PENNSYLVANIA 25
GEORGIA 24
ILLINOIS 23
... ...

Histogram

Následující příklad vypočítá typy událostí histogramu storm, které měly bouře trvající déle než 1 den. Vzhledem k tomu Duration , že obsahuje mnoho hodnot, použijte bin() k seskupení hodnot do 1denních intervalů.

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

Výstup

Typ události Délka EventCount
Sucho 30.00:00:00 1646
Ničivý požár 30.00:00:00 11
Heat 30.00:00:00 14
Povodeň 30.00:00:00 20
Těžký déšť 29.00:00:00 42
... ... ...

Agreguje výchozí hodnoty.

Pokud má vstup summarize operátoru alespoň jeden prázdný klíč seskupit podle, jeho výsledek je také prázdný.

Pokud vstup summarize operátoru nemá prázdný klíč seskupit podle, je výsledkem výchozí hodnoty agregací použitých v části summarize Další informace naleznete v tématu Výchozí hodnoty agregací.

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)

Výstup

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
Není číslo 0 0 0 0

Výsledek avg_x(x) je NaN způsoben dělením 0.

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

Výstup

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

Výstup

set_x list_x
[] []

Agregovaný průměr sečte všechny hodnoty, které nejsou null, a spočítá pouze ty, které se výpočtu zúčastnily (nebudou brát v úvahu hodnoty null).

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

Výstup

sum_y avg_y
15 5

Pravidelný počet bude spočítat hodnoty null:

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

Výstup

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)

Výstup

set_y set_y1
[5.0] [5.0]