Operátor summarize

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

Syntax

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

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

Parametry

Název Typ Vyž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 , jako count() je nebo avg(), s názvy sloupců jako argumenty.
GroupExpression Skalár ✔️ Skalární výraz, který může odkazovat na vstupní data. Výstup bude obsahovat tolik záznamů, kolik je jedinečných hodnot všech výrazů skupiny.
SummarizeParameters string Žádné nebo více parametrů oddělených mezerami ve formě Name=Value , které řídí chování. Projděte si podporované parametry.

Poznámka

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

  • Pokud GroupExpression není k dispozici, výstup bude jeden (prázdný) řádek.
  • Pokud je k dispozici GroupExpression , výstup nebude obsahovat žádné řádky.

Podporované parametry

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

Návraty

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

Výsledek obsahuje tolik řádků, kolik je jedinečných by kombinací hodnot (které můžou být nulové). Pokud nejsou k dispozici žádné klíče skupiny, výsledek bude mít jeden záznam.

Pokud chcete shrnout rozsahy číselných hodnot, použijte bin() k omezení rozsahů na samostatné hodnoty.

Poznámka

  • I když můžete zadat libovolné výrazy pro agregační i seskupovací výrazy, je efektivnější použít jednoduché názvy sloupců nebo použít bin() pro číselný sloupec.
  • Automatické hodinové intervaly pro sloupce datetime 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 Výchozí hodnota
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() prázdné dynamické pole ([])
Všechny ostatní null

Poznámka

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

Příklady

Sumarizace cen podle ovoce a dodavatele

Jedinečná kombinace

Následující dotaz určí, jaké jedinečné kombinace State a EventType existují pro bouře, které vedly k přímému zranění. Nejsou k dispozici žádné agregační funkce, pouze seskupené klíče. Ve výstupu se zobrazí jenom sloupce pro tyto výsledky.

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

Výstup

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

Stav Typ události
TEXAS Bouřkový vítr
TEXAS Blesková povodeň
TEXAS Zimní počasí
TEXAS Silný vítr
TEXAS Povodní
... ...

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

Najde minimální a maximální dešťové bouře na Havaji. Neexistuje žádná klauzule group-by, takže výstup obsahuje jenom jeden řádek.

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

Výstup

Minimum Maximum
01:08:00 11:55:00

Počet jedinečných položek

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

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

Výstup

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

Stav TypesOfStorms
TEXAS 27
KALIFORNIE 26
PENNSYLVANIA 25
GRUZIE 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 intervalů 1 dne.

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 Počet událostí
Sucha 30.00:00:00 1646
Wildfire 30.00:00:00 11
Tepla 30.00:00:00 14
Povodní 30.00:00:00 20
Silný déšť 29.00:00:00 42
... ... ...

Agreguje výchozí hodnoty.

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

Pokud vstup operátoru summarize nemá prázdný klíč seskupování, jsou výsledkem výchozí hodnoty agregací použitých v části summarizeVý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ýsledkem je NaN vydělení avg_x(x) číslem 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 na výpočtu podílely (nebere 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

Běžný počet bude počí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]