Operátor summarize
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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
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
Následující dotaz vypočítá počet jedinečných typů událostí storm pro každý stav a seřadí výsledky podle počtu jedinečných typů storm:
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] |