Operátor summarize

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

Sales | summarize NumTransactions=count(), Total=sum(UnitPrice * NumUnits) by Fruit, StartOfMonth=startofmonth(SellDateTime)

Vrátí tabulku s počtem transakcí prodeje a celkovou částkou za ovoce a měsíc prodeje. Ve výstupních sloupcích se zobrazuje počet transakcí, hodnota transakce, ovoce a datum začátku měsíce, ve kterém byla transakce zaznamenána.

T | summarize count() by price_range=bin(price, 10.0)

Tabulka, která ukazuje, kolik položek má ceny v každém intervalu [0,10,0], [10,0,20,0] atd. V tomto příkladu je sloupec pro počet a jeden pro cenový rozsah. Všechny ostatní vstupní sloupce se ignorují.

Syntax

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

Argumenty

  • Sloupec: Volitelný název sloupce výsledků Výchozí hodnota je název odvozený z výrazu.

  • Agregace: Volání agregační funkce , například count() nebo avg(), s názvy sloupců jako argumenty.

  • GroupExpression: 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: Nulové nebo více parametrů (oddělených mezerami) ve formě Name=Value , které řídí chování. Podporují se následující parametry:

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

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.

Návraty

Vstupní řádky jsou uspořádány do skupin se stejnými hodnotami by 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 jedinečných by kombinací hodnot (což může být nula). Pokud nejsou k dispozici žádné klíče skupiny, výsledek má 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 pro sloupce datetime se už nepodporují. Místo toho použijte explicitní binning. Například, summarize by bin(timestamp, 1h).

Agreguje výchozí hodnoty.

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

Operátor Výchozí hodnota
count(), countif(), dcount(), dcountif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() prázdné dynamické pole ([])
Všichni ostatní null

Při použití těchto agregací u entit, které obsahují hodnoty null, budou hodnoty null ignorovány a nebudou se účastnit výpočtu (viz příklady níže).

Příklady

Summarize price by fruit and supplier.

Jedinečná kombinace

Určete, jaké jedinečné kombinace ActivityType a CompletionStatus které jsou v tabulce. Neexistují žádné agregační funkce, pouze seskupené klíče. Výstup zobrazí jenom sloupce pro tyto výsledky:

Activities | summarize by ActivityType, completionStatus
ActivityType completionStatus
dancing started
singing started
dancing abandoned
singing completed

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

Vyhledá minimální a maximální časové razítko všech záznamů v tabulce Aktivity. Klauzule group-by neexistuje, takže ve výstupu je jenom jeden řádek:

Activities | summarize Min = min(Timestamp), Max = max(Timestamp)
Min Max
1975-06-09 09:21:45 2015-12-24 23:45: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 pro "kontinent" existuje několik hodnot, není v klauzuli 'by' potřeba žádná funkce seskupení:

Activities | summarize cities=dcount(city) by continent
cities continent
4290 Asia
3267 Europe
2673 North America

Histogram

Následující příklad vypočítá histogram pro každý typ aktivity. Protože Duration má mnoho hodnot, použijte bin k seskupení hodnot do 10minutových intervalů:

Activities | summarize count() by ActivityType, length=bin(Duration, 10m)
count_ ActivityType length
354 dancing 0:00:00.000
23 singing 0:00:00.000
2717 dancing 0:10:00.000
341 singing 0:10:00.000
725 dancing 0:20:00.000
2876 singing 0:20:00.000
...

Agreguje výchozí hodnoty.

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

Pokud vstup summarize operátoru nemá prázdný klíč seskupit podle, výsledek je výchozí hodnoty agregací použitých v :summarize

datatable(x:long)[]
| summarize any(x), arg_max(x, x), arg_min(x, 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)
any_x max_x max_x_x min_x min_x_x avg_x schema_x max_x1 min_x1 percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)
set_x list_x
[] []

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

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

Běžný 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)
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)
set_y set_y1
[5.0] [5.0]