summarize-operator
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Skapar en tabell som aggregerar innehållet i indatatabellen.
Syntax
T| summarize
[ SummarizeParameters ] [[Column=
] Aggregation [,
...]] [by
[Column=
] GroupExpression [,
...]]
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
kolumn | string |
Namnet på resultatkolumnen. Standardvärdet är ett namn som härleds från uttrycket. | |
sammansättning | string |
✔️ | Ett anrop till en sammansättningsfunktion till exempel count() eller avg() , med kolumnnamn som argument. |
GroupExpression | skalär | ✔️ | Ett skalärt uttryck som kan referera till indata. Utdata har lika många poster som det finns distinkta värden för alla grupputtryck. |
SummarizeParameters | string |
Noll eller fler blankstegsavgränsade parametrar i form av Name= Value som styr beteendet. Se parametrar som stöds. |
Not
När indatatabellen är tom beror utdata på om GroupExpression- används:
- Om GroupExpression- inte tillhandahålls blir utdata en enda (tom) rad.
- Om GroupExpression- tillhandahålls har utdata inga rader.
Parametrar som stöds
Namn | Beskrivning |
---|---|
hint.num_partitions |
Anger antalet partitioner som används för att dela frågebelastningen på klusternoder. Se shuffle-fråga |
hint.shufflekey=<key> |
Den shufflekey frågan delar frågebelastningen på klusternoder med hjälp av en nyckel för att partitioneras data. Se shuffle-fråga |
hint.strategy=shuffle |
Den shuffle strategifrågan delar frågebelastningen på klusternoder, där varje nod bearbetar en partition av data. Se shuffle-fråga |
Returnerar
Indataraderna ordnas i grupper med samma värden för by
uttryck. Sedan beräknas de angivna aggregeringsfunktionerna över varje grupp och skapar en rad för varje grupp. Resultatet innehåller de by
kolumnerna och minst en kolumn för varje beräknad aggregering. (Vissa sammansättningsfunktioner returnerar flera kolumner.)
Resultatet har så många rader som det finns distinkta kombinationer av by
värden (som kan vara noll). Om det inte finns några gruppnycklar har resultatet en enda post.
Om du vill sammanfatta över intervall med numeriska värden använder du bin()
för att minska intervall till diskreta värden.
Not
- Även om du kan ange godtyckliga uttryck för både aggregerings- och grupperingsuttrycken är det mer effektivt att använda enkla kolumnnamn eller tillämpa
bin()
på en numerisk kolumn. - De automatiska intervallen varje timme för datetime-kolumner stöds inte längre. Använd explicit binning i stället. Till exempel
summarize by bin(timestamp, 1h)
.
Standardvärden för sammansättningar
I följande tabell sammanfattas standardvärdena för sammansättningar:
Operatör | Standardvärde |
---|---|
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() |
tom dynamisk matris ([]) |
Alla andra | noll |
Not
När du tillämpar dessa aggregeringar på entiteter som innehåller null-värden ignoreras null-värdena och räknas inte in i beräkningen. Exempel finns i aggregerar standardvärden.
Exempel
Exemplet i det här avsnittet visar hur du använder syntaxen för att komma igång.
Exemplen i den här artikeln använder offentligt tillgängliga tabeller i hjälpkluster, till exempel tabellen
StormEvents
i databasen Samples.
Exemplen i den här artikeln använder offentligt tillgängliga tabeller, till exempel tabellen
StormEvents
i Väderanalys exempeldata.
Unik kombination
Följande fråga avgör vilka unika kombinationer av State
och EventType
det finns för stormar som resulterade i direkt skada. Det finns inga aggregeringsfunktioner, bara grupp-efter-nycklar. Utdata visar bara kolumnerna för dessa resultat.
StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType
utdata
I följande tabell visas endast de första 5 raderna. Kör frågan för att se de fullständiga utdata.
Stat | EventType |
---|---|
TEXAS | Åskväder |
TEXAS | Flash Flood |
TEXAS | Vinterväder |
TEXAS | Hög vind |
TEXAS | Översvämning |
... | ... |
Minsta och högsta tidsstämpel
Hittar de minsta och högsta kraftiga regnstormarna på Hawaii. Det finns ingen grupp-efter-sats, så det finns bara en rad i utdata.
StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)
utdata
Min | Max |
---|---|
01:08:00 | 11:55:00 |
Distinkt antal
Följande fråga beräknar antalet unika stormhändelsetyper för varje tillstånd och sorterar resultatet efter antalet unika stormtyper:
StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms
utdata
I följande tabell visas endast de första 5 raderna. Kör frågan för att se de fullständiga utdata.
Stat | TypesOfStorms |
---|---|
TEXAS | 27 |
KALIFORNIEN | 26 |
PENNSYLVANIA | 25 |
GEORGIEN | 24 |
ILLINOIS | 23 |
... | ... |
Histogram
I följande exempel beräknas ett histogram för stormhändelsetyper som hade stormar som varade längre än 1 dag. Eftersom Duration
har många värden använder du bin()
för att gruppera dess värden i 1-dagars intervall.
StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length
utdata
EventType | Längd | EventCount |
---|---|---|
Torka | 30.00:00:00 | 1646 |
Löpeld | 30.00:00:00 | 11 |
Värme | 30.00:00:00 | 14 |
Översvämning | 30.00:00:00 | 20 |
Kraftigt regn | 29.00:00:00 | 42 |
... | ... | ... |
Aggregerar standardvärden
När indata för summarize
-operatorn har minst en tom grupp-efter-nyckel är även resultatet tomt.
När indata för summarize
-operatorn inte har en tom grupp-by-nyckel är resultatet standardvärdena för de aggregeringar som används i summarize
Mer information finns i Standardvärden för sammansättningar.
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)
utdata
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 |
Resultatet av avg_x(x)
beror NaN
på att dividera med 0.
datatable(x:long)[]
| summarize count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)
utdata
count_x | countif_ | dcount_x | dcountif_x |
---|---|---|---|
0 | 0 | 0 | 0 |
datatable(x:long)[]
| summarize make_set(x), make_list(x)
utdata
set_x | list_x |
---|---|
[] | [] |
Den aggregerade genomsnittssumman summerar alla icke-null-värden och räknar endast de som deltog i beräkningen (tar inte hänsyn till nullvärden).
range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)
utdata
sum_y | avg_y |
---|---|
15 | 5 |
Det vanliga antalet räknar nullvärden:
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)
utdata
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)
utdata
set_y | set_y1 |
---|---|
[5.0] | [5.0] |