Operatore top-nested
L'operatore esegue l'aggregazione top-nested
gerarchica e la selezione di valori.
Si supponga di avere una tabella con informazioni sulle vendite, ad esempio aree, venditori e importi venduti. L'operatore top-nested
può aiutarti a rispondere a domande complesse, ad esempio "Quali sono le prime cinque aree per vendita e chi sono i primi tre venditori in ognuna di queste aree?"
I dati di origine vengono partizionati in base ai criteri impostati nella prima top-nested
clausola, ad esempio l'area. Successivamente, l'operatore seleziona i primi record in ogni partizione usando un'aggregazione, ad esempio l'aggiunta di importi delle vendite. Ogni clausola successiva top-nested
affina le partizioni create dalla clausola precedente, creando una gerarchia di gruppi più precisi.
Il risultato è una tabella con due colonne per clausola. Una colonna contiene i valori di partizionamento, ad esempio region, mentre l'altra colonna contiene i risultati del calcolo dell'aggregazione, ad esempio la somma delle vendite.
Sintassi
T|
top-nested
[ N ] of
Expr [with
others
=
ConstExpr] by
Aggregation [asc
| desc
] [],
top-nested
... ]
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
T | string |
✔️ | Espressione tabulare di input. |
N | int |
Numero di valori principali da restituire per questo livello di gerarchia. Se omesso, vengono restituiti tutti i valori distinti. | |
Expr | string |
✔️ | Espressione sul record di input che indica il valore da restituire per questo livello di gerarchia. In genere, fa riferimento a una colonna di T o implica un calcolo come bin() in una colonna. Facoltativamente, impostare un nome di colonna di output come Name= Expr. |
ConstExpr | string |
Se specificato, per ogni livello di gerarchia, viene aggiunto un record con il valore che corrisponde all'aggregazione su tutti i record che non lo hanno impostato nella parte superiore. | |
Aggregazione | string |
Funzione di aggregazione applicata ai record con lo stesso valore Expr . Il risultato determina i record principali. Vedere Funzioni di aggregazione supportate. Facoltativamente, impostare un nome di colonna di output comeAggregazionenome= . |
Funzioni di aggregazione supportate
Sono supportate le funzioni di aggregazione seguenti:
Nota
È supportata anche qualsiasi combinazione algebrica delle aggregazioni.
Restituisce
Tabella con due colonne per ogni clausola. Una colonna contiene valori univoci calcolati usando Expr e l'altra colonna mostra i risultati ottenuti dal calcolo aggregazione .
Includere dati da altre colonne
Nella tabella di output vengono visualizzate solo le colonne specificate come top-nested
clausola Expr .
Per includere tutti i valori di una colonna a un livello specifico:
- Non specificare il valore di N.
- Usare il nome della colonna come valore di Expr.
- Usare
Ignore=max(1)
come valore di Aggregazione. - Rimuovere la colonna non necessaria
Ignore
con project-away.
Per un esempio, vedere Ottenere gli eventi più recenti per stato con dati aggiuntivi di altre colonne.
Considerazioni sulle prestazioni
Il numero di record può aumentare in modo esponenziale con il numero di top-nested
clausole e la crescita dei record è ancora più veloce se non viene specificato alcun limite N . Questo operatore può utilizzare una notevole quantità di risorse.
Se la distribuzione dell'aggregazione è notevolmente non uniforme, limitare il numero di valori distinti da restituire specificando N. Usare quindi la with
others
=
specifica ConstExpr per ottenere un'indicazione del peso di tutti gli altri casi.
Esempio
Introduzione all'operatore top-nested
La query seguente partiziona la StormEvents
tabella in base alla State
colonna e calcola la latitudine totale per ogni stato. La query seleziona i primi due stati con la somma della latitudine più alta. All'interno di questi primi due stati, la query raggruppa i dati Source
in base a e seleziona le prime tre origini con la somma della latitudine più alta. Per ognuna delle prime tre origini nei primi due stati, la query raggruppa i dati in base EndLocation
a e seleziona con EndLocation
la somma della latitudine più alta.
StormEvents // Data source.
| top-nested 2 of State by sum(BeginLat), // Top 2 States by total latitude.
top-nested 3 of Source by sum(BeginLat), // Top 3 Sources by total latitude in each State.
top-nested 1 of EndLocation by sum(BeginLat) // Top 1 EndLocation by total latitude in each Source and State.
Output
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Applicazione della legge | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Pubblici | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Trained Spotter | 21279.7083 | SHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Pubblici | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Applicazione della legge | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Trained Spotter | 13997.7124 | CLAUDE | 421.44 |
Migliorare i risultati annidati in primo piano con i dati di un'altra colonna
La query seguente si basa sull'esempio precedente introducendo una clausola aggiuntiva top-nested
. In questa nuova clausola, l'assenza di una specifica numerica comporta l'estrazione di tutti i valori distinti di EventType
tra le partizioni. La max(1)
funzione di aggregazione è semplicemente un segnaposto, rendendo irrilevante il risultato, quindi l'operatore project-away rimuove la Ignore
colonna. Il risultato mostra tutti i tipi di evento associati ai dati aggregati in precedenza.
StormEvents
| top-nested 2 of State by sum(BeginLat),
top-nested 3 of Source by sum(BeginLat),
top-nested 1 of EndLocation by sum(BeginLat),
top-nested of EventType by Ignore = max(1)
| project-away Ignore
Output
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation | EventType |
---|---|---|---|---|---|---|
TEXAS | 123400.51009999994 | Pubblici | 13650.907900000002 | AMARILLO | 246.25979999999998 | Grandine |
TEXAS | 123400.51009999994 | Pubblici | 13650.907900000002 | AMARILLO | 246.25979999999998 | Vento di tempesta |
KANSAS | 87771.235500000068 | Pubblici | 22855.6206 | BUCKLIN | 488.2457 | Alluvione |
KANSAS | 87771.235500000068 | Pubblici | 22855.6206 | BUCKLIN | 488.2457 | Vento di tempesta |
KANSAS | 87771.235500000068 | Pubblici | 22855.6206 | BUCKLIN | 488.2457 | Grandine |
TEXAS | 123400.51009999994 | Trained Spotter | 13997.712400000009 | CLAUDE | 421.44 | Grandine |
KANSAS | 87771.235500000068 | Applicazione della legge | 18744.823000000004 | FT SCOTT | 264.858 | Piena improvvisa |
KANSAS | 87771.235500000068 | Applicazione della legge | 18744.823000000004 | FT SCOTT | 264.858 | Vento di tempesta |
KANSAS | 87771.235500000068 | Applicazione della legge | 18744.823000000004 | FT SCOTT | 264.858 | Alluvione |
TEXAS | 123400.51009999994 | Applicazione della legge | 37228.596599999961 | PERRYTON | 289.3178 | Grandine |
... | ... | ... | ... | ... | ... |
Usare with
others
per esplorare i dati esclusi
Quando viene incorporata all'interno di una top-nested
clausola, la with
others
specifica introduce un record aggiuntivo che aggrega i dati esclusi dai risultati principali. Nella query seguente viene creato un record aggiuntivo nelle State
colonne e aggregated_State
che rappresenta la latitudine collettiva di tutti gli stati tranne Kansas e Texas. Inoltre, la EndLocation
colonna e aggregated_EndLocation
dispone di nove record aggiuntivi. Questi record mostrano la latitudine combinata delle posizioni finali che non sono qualificate come posizione superiore all'interno di ogni stato e origine.
StormEvents
| top-nested 2 of State with others = "All Other States" by sum(BeginLat),
top-nested 3 of Source by sum(BeginLat),
top-nested 1 of EndLocation with others = "All Other End Locations" by sum(BeginLat)
Output
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Applicazione della legge | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Pubblici | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Trained Spotter | 21279.7083 | SHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Pubblici | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Applicazione della legge | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Trained Spotter | 13997.7124 | CLAUDE | 421.44 |
KANSAS | 87771.2355000001 | Applicazione della legge | 18744.823 | Tutte le altre posizioni finali | 18479.965 |
KANSAS | 87771.2355000001 | Pubblici | 22855.6206 | Tutte le altre posizioni finali | 22367.3749 |
KANSAS | 87771.2355000001 | Trained Spotter | 21279.7083 | Tutte le altre posizioni finali | 20890.9679 |
TEXAS | 123400.5101 | Pubblici | 13650.9079 | Tutte le altre posizioni finali | 13404.6481 |
TEXAS | 123400.5101 | Applicazione della legge | 37228.5966 | Tutte le altre posizioni finali | 36939.2788 |
TEXAS | 123400.5101 | Trained Spotter | 13997.7124 | Tutte le altre posizioni finali | 13576.2724 |
KANSAS | 87771.2355000001 | Tutte le altre posizioni finali | 24891.0836 | ||
TEXAS | 123400.5101 | Tutte le altre posizioni finali | 58523.2932000001 | ||
Tutti gli altri stati | 1149279.5923 | Tutte le altre posizioni finali | 1149279.5923 |
La query seguente mostra gli stessi risultati per il primo livello usato nell'esempio precedente.
StormEvents
| where State !in ('TEXAS', 'KANSAS')
| summarize sum(BeginLat)
Output
sum_BeginLat |
---|
1149279.5923 |
Ordinare i risultati gerarchici
Per ottenere un ordinamento completo, la query seguente usa l'ordinamento basato su indice per ogni valore all'interno del livello di gerarchia corrente, per gruppo. Questo ordinamento è orientato alla disposizione del risultato in base al livello annidato finale, in questo caso .EndLocation
StormEvents
| top-nested 2 of State by sum(BeginLat),
top-nested 2 of Source by sum(BeginLat),
top-nested 4 of EndLocation by sum(BeginLat)
| sort by State, Source, aggregated_EndLocation
| summarize
EndLocations = make_list(EndLocation, 10000),
endLocationSums = make_list(aggregated_EndLocation, 10000)
by State, Source
| extend indicies = range(0, array_length(EndLocations) - 1, 1)
| mv-expand EndLocations, endLocationSums, indicies
Output
State | Source | EndLocations | endLocationSums | Indici |
---|---|---|---|---|
TEXAS | Trained Spotter | CLAUDE | 421.44 | 0 |
TEXAS | Trained Spotter | AMARILLO | 316.8892 | 1 |
TEXAS | Trained Spotter | DALHART | 252.6186 | 2 |
TEXAS | Trained Spotter | PERRYTON | 216.7826 | 3 |
TEXAS | Applicazione della legge | PERRYTON | 289.3178 | 0 |
TEXAS | Applicazione della legge | LEAKEY | 267.9825 | 1 |
TEXAS | Applicazione della legge | BRACKETTVILLE | 264.3483 | 2 |
TEXAS | Applicazione della legge | GILMER | 261.9068 | 3 |
KANSAS | Trained Spotter | SHARON SPGS | 388.7404 | 0 |
KANSAS | Trained Spotter | ATWOOD | 358.6136 | 1 |
KANSAS | Trained Spotter | LENORA | 317.0718 | 2 |
KANSAS | Trained Spotter | SCOTT CITY | 307.84 | 3 |
KANSAS | Pubblici | BUCKLIN | 488.2457 | 0 |
KANSAS | Pubblici | ASHLAND | 446.4218 | 1 |
KANSAS | Pubblici | PROTEZIONE | 446.11 | 2 |
KANSAS | Pubblici | MEADE STATE PARK | 371.1 | 3 |
Ottenere gli eventi più recenti per stato con dati aggiuntivi da altre colonne
La query seguente illustra come recuperare i due eventi più recenti per ogni stato degli Stati Uniti insieme ai dettagli dell'evento pertinenti. Si noti l'uso di all'interno di max(1)
determinate colonne, identificate da Ignore*
, che facilita la propagazione dei dati tramite la query senza imporre alcuna logica di selezione.
StormEvents
| top-nested of State by Ignore0=max(1), // Partition the data by each unique value of state.
top-nested 2 of StartTime by Ignore1=max(StartTime), // Get the 2 most recent events in each state.
top-nested of EndTime by Ignore2=max(1), // Append the EndTime for each event.
top-nested of EpisodeId by Ignore3=max(1) // Append the EpisodeId for each event.
| project-away Ignore* // Remove the unnecessary aggregation columns.
| order by State asc, StartTime desc // Sort results alphabetically and chronologically.
Ottenere i record più recenti per identità con dati aggiuntivi da altre colonne
La query seguente illustra come estrarre i record più recenti per identità e si basa sui concetti introdotti nell'esempio precedente. La prima top-nested
clausola partiziona i dati in base a valori distinti di id
. La clausola successiva identifica i due record più recenti in base all'oggetto timestamp
per ogni id
oggetto . Altre informazioni vengono aggiunte usando un operatore insieme a un top-nested
conteggio non specificato e all'aggregazione arbitraria max(1)
. Infine, le colonne di aggregazione non necessarie vengono rimosse usando l'operatore project-away
.
datatable(id: string, timestamp: datetime, otherInformation: string) // Create a source datatable.
[
"Barak", datetime(2015-01-01), "1",
"Barak", datetime(2016-01-01), "2",
"Barak", datetime(2017-01-20), "3",
"Donald", datetime(2017-01-20), "4",
"Donald", datetime(2017-01-18), "5",
"Donald", datetime(2017-01-19), "6"
]
| top-nested of id by Ignore0=max(1), // Partition the data by each unique value of id.
top-nested 2 of timestamp by Ignore1=max(timestamp), // Get the 2 most recent events for each state.
top-nested of otherInformation by Ignore2=max(1) // Append otherInformation for each event.
| project-away Ignore0, Ignore1, Ignore2 // Remove the unnecessary aggregation columns.
Output
id | timestamp | otherInformation |
---|---|---|
Barak | 2016-01-01T00:00:00Z | 2 |
Donald | 2017-01-19T00:00:00Z | 6 |
Barak | 2017-01-20T00:00:00Z | 3 |
Donald | 2017-01-20T00:00:00Z | 4 |
Contenuti correlati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per