Dela via


summarize-operator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft 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.

Sammanfatta priset efter frukt och leverantör.

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]