operatore di riepilogo
Sintassi
T | summarize [SummarizeParameters] [[ Colonna =] Aggregazione [, ...]] [ by [ Colonna =] GroupExpression [, ...]]
Argomenti
- Colonna: nome facoltativo per una colonna di risultati. Il valore predefinito è un nome derivato dall'espressione.
- Aggregazione: una chiamata a una funzione di aggregazione come
count()oavg(), con i nomi colonna come argomenti. Vedere l' elenco delle funzioni di aggregazione. - GroupExpression: un'espressione scalare che può fare riferimento ai dati di input. L'output avrà tanti record quanti sono i valori distinti di tutte le espressioni di gruppo.
- SummarizeParameters: zero o più parametri (separati da spazi) sotto forma di Nome
=Valore che controlla il comportamento. Sono supportati i seguenti parametri:
Nota
Quando la tabella di input è vuota, l'output dipende dall'utilizzo di GroupExpression :
- Se GroupExpression non viene fornito, l'output sarà una singola riga (vuota).
- Se viene fornito GroupExpression , l'output non avrà righe.
Restituisce
Le righe di input sono organizzate in gruppi che hanno gli stessi valori delle espressioni by . Quindi le funzioni di aggregazione specificate vengono calcolate su ciascun gruppo, producendo una riga per ciascun gruppo. Il risultato contiene le colonne by e almeno una colonna per ogni aggregato calcolato. (Alcune funzioni di aggregazione restituiscono più colonne).
Il risultato ha un numero di righe pari al numero di combinazioni distinte di valori by (che possono essere zero). Se non ci sono chiavi di gruppo fornite, il risultato ha un singolo record.
Per riepiloghi su intervalli di valori numerici, utilizzare bin() per ridurre gli intervalli a valori discreti.
Nota
- Sebbene sia possibile fornire espressioni arbitrarie sia per le espressioni di aggregazione che di raggruppamento, è più efficiente utilizzare nomi di colonna semplici o applicare
bin()a una colonna numerica.
Elenco delle funzioni di aggregazione
| Funzione | Descrizione |
|---|---|
| arg_max () | Restituisce una o più espressioni quando l'argomento è massimizzato |
| arg_min () | Restituisce una o più espressioni quando l'argomento è ridotto al minimo |
| media () | Restituisce un valore medio nel gruppo |
| avgif () | Restituisce un valore medio nel gruppo (con predicato) |
| binario_all_e | Restituisce il valore aggregato utilizzando il valore binario AND del gruppo |
| binary_all_or | Restituisce il valore aggregato utilizzando il valore binario OR del gruppo |
| xore_all_binario | Restituisce il valore aggregato utilizzando il valore binario XOR del gruppo |
| conteggio () | Restituisce un conteggio del gruppo |
| paese () | Restituisce un conteggio con il predicato del gruppo |
| conteggio () | Restituisce un conteggio distinto approssimativo degli elementi del gruppo |
| dcountif () | Restituisce un conteggio distinto approssimativo degli elementi del gruppo (con predicato) |
| make_list () | Restituisce un elenco di tutti i valori all'interno del gruppo |
| make_list_if () | Restituisce un elenco di tutti i valori all'interno del gruppo (con predicato) |
| make_set () | Restituisce una serie di valori distinti all'interno del gruppo |
| make_set_if () | Restituisce una serie di valori distinti all'interno del gruppo (con predicato) |
| max () | Restituisce il valore massimo nel gruppo |
| maxif () | Restituisce il valore massimo nel gruppo (con predicato) |
| min () | Restituisce il valore minimo nel gruppo |
| minif () | Restituisce il valore minimo nel gruppo (con predicato) |
| somma () | Restituisce la somma degli elementi all'interno del gruppo |
| sumif () | Restituisce la somma degli elementi all'interno del gruppo (con predicato) |
| take_any () | Restituisce un valore casuale non vuoto per il gruppo |
| take_anyif () | Restituisce un valore casuale non vuoto per il gruppo (con predicato) |
Aggrega valori predefiniti
La seguente tabella riepiloga i valori predefiniti delle aggregazione:
| Operatore | Valore predefinito |
|---|---|
count(), countif(), dcount(), dcountif() |
0 |
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() |
array dinamico vuoto ([]) |
| Tutti gli altri | null |
Quando si utilizzano questi aggregati su entità che includono valori null, i valori null verranno ignorati e non parteciperanno al calcolo (vedere gli esempi riportati di seguito).
Esempi
Questo esempio conta semplicemente tutti gli eventi nella tabella events .
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count()
Risultati
NumEvents |
|---|
4163038 |
Esempio successivo
Questo esempio restituisce il numero totale di eventi per le ultime 24 ore, raccolti in periodi 24hr .
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count() by HourBucket=bin(original_time, 60m)
| sort by HourBucket desc
| take 5
Risultati
HourBucket |
NumEvents |
|---|---|
2022-06-12 23:00:00.000 |
8374746 |
2022-06-12 22:00:00.000 |
8214746 |
2022-06-12 21:00:00.000 |
7374746 |
2022-06-12 20:00:00.000 |
9938733 |
2022-06-12 19:00:00.000 |
0 |
2022-06-12 18:00:00.000 |
1 |
Una tabella che mostra quanti eventi sono stati inseriti in ogni intervallo di un'ora per le ultime 24 ore. La tabella conterrà due colonne, EventCount , che è il conteggio degli eventi per l'ora e HourBucket è la finestra temporale raccolta di aggregazione per gli eventi.
Combinazione univoca
Determinare quali combinazioni univoche di evento name e di severity sono presenti in una tabella. Non ci sono funzioni di aggregazione, solo chiavi di raggruppamento. L'output mostrerà solo le colonne per tali risultati:
events
| project severity, name, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize by name, severity
| sort by name asc, severity desc
| take 5
Risultati
name |
severity |
|---|---|
(Primary) Failover cable OK |
10 |
(Primary) Failover cable Not OK |
6 |
(Primary) Failover message block alloc failed |
7 |
30419 Internet Explorer 8 XSS Attack |
8 |
A fatal alert was generated and sent to the remote endpoint |
7 |
Data / ora minima e massima
Trova la data/ora minima e massima di tutti gli eventi nella tabella events . Non c'è alcuna clausola group - by, quindi c'è solo una riga nell'output:
events
| project severity, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize MinTime=min(original_time), MaxTime=max(original_time)
Risultati
Min |
Max |
|---|---|
1975-06-09 09:21:45 |
2015-12-24 23:45:00 |
Conteggio distinto
Crea una riga per ogni name, mostrando un conteggio di src_ip distinti gli eventi inseriti.
events
| project name, severity, original_time, src_ip
| where original_time > ago(24h)
| where severity > 6 and isnotempty(name) and isnotempty(src_ip)
| summarize SrcIpCount=count_distinct(src_ip) by Name=name
| order by SrcIpCount desc
| take 5
Risultati
| Nome | Conteggio SrcIp |
|---|---|
| L'elaborazione della politica di gruppo non è riuscita | 385 |
| Violazione protezione contenuto | 367 |
| Violazione applicazione server web | 312 |
| Bypass autenticazione server Openfire Jabber | 305 |
| Nega controllo percorso inverso protocollo | 290 |