Operatore top-nested
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft Sentinel
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ò aiutare 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 record principali 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 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 | Digita | Obbligatorio | 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 quale valore restituire per questo livello di gerarchia. In genere, fa riferimento a una colonna di T o prevede un calcolo come bin() in una colonna. Facoltativamente, impostare un nome di colonna di output come Nome = 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 eseguito all'inizio. | |
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 come Aggregazione dei nomi = . |
Funzioni di aggregazione supportate
Sono supportate le funzioni di aggregazione seguenti:
Nota
È supportata anche qualsiasi combinazione algebrica delle aggregazioni.
Valori restituiti
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 .
Utilizzo della with
others
clausola
L'uso dell'operatore top-nested
con with
others
consente di visualizzare il contenuto principale contestualizzato in un set di dati più ampio. La valutazione dei dati in questo modo è utile quando si esegue il rendering visivo dei dati.
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 Eventi più recenti per stato con altri dati di colonna.
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 il parametro N non viene specificato. Questo operatore può utilizzare una notevole quantità di risorse.
Se la distribuzione delle aggregazioni è irregolare, limitare il numero di valori distinti da restituire specificando N. Usare quindi la with
others
=
clausola ConstExpr per ottenere un'idea del peso di tutti gli altri casi.
Esempi
Principali stati danneggiati, tipi di eventi e posizioni finali per danni alle proprietà
La query seguente partiziona la StormEvents
tabella in base alla State
colonna e calcola il danno totale della proprietà per ogni stato. La query seleziona i due stati principali con il maggior numero di danni alle proprietà. All'interno di questi due stati principali, la query raggruppa i dati EventType
in base a e seleziona i primi tre tipi di evento con il maggior danno. La query raggruppa quindi i dati EndLocation
in base a e seleziona con EndLocation
il danno più alto. Nei risultati viene visualizzato un EndLocation
solo valore, probabilmente a causa della grande natura degli eventi della tempesta o non documentando la posizione finale.
StormEvents // Data source.
| top-nested 2 of State by sum(DamageProperty), // Top 2 States by total damaged property.
top-nested 3 of EventType by sum(DamageProperty), // Top 3 EventType by total damaged property for each State.
top-nested 1 of EndLocation by sum(DamageProperty) // Top 1 EndLocation by total damaged property for each EventType and State.
| project State, EventType, EndLocation, StateTotalDamage = aggregated_State, EventTypeTotalDamage = aggregated_EventType, EndLocationDamage = aggregated_EndLocation
Output
Provincia | EventType | EndLocation | StateTotalDamage | EventTypeTotalDamage | EndLocationDamage |
---|---|---|---|---|---|
CALIFORNIA | Wildfire | 1445937600 | 1326315000 | 1326315000 | |
CALIFORNIA | HighWind | 1445937600 | 61320000 | 61320000 | |
CALIFORNIA | DebrisFlow | 1445937600 | 48000000 | 48000000 | |
OKLAHOMA | IceStorm | 915470300 | 826000000 | 826000000 | |
OKLAHOMA | WinterStorm | 915470300 | 40027000 | 40027000 | |
OKLAHOMA | Alluvione | PIATTAFORMA | 915470300 | 21485000 | 20000000 |
Primi cinque stati con danni alla with
others
proprietà raggruppati
Nell'esempio seguente viene utilizzato l'operatore top-nested
per identificare i primi cinque stati con il maggior numero di danni alle proprietà e viene utilizzata la with
others
clausola per raggruppare la proprietà danneggiata per tutti gli altri stati. Visualizza quindi la proprietà danneggiata per i primi cinque stati e tutti gli altri stati come piechart
utilizzando il render
comando .
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Output
Eventi più recenti per stato con altri dati di colonna
La query seguente recupera i due eventi più recenti per ogni stato degli Stati Uniti con i dettagli dell'evento pertinenti. max(1)
Usa all'interno di determinate colonne per propagare i dati senza usare la logica di selezione nidificata dall'alto. Le colonne di aggregazione generate Ignore
vengono rimosse tramite project-away
.
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.
Record più recenti per identità con altri dati di colonna
L'esempio seguente top-nested
estrae 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
utilizzando Ignore0=max(1)
come segnaposto. Per ogni id
, identifica i due record più recenti in base all'oggetto timestamp
. Altre informazioni vengono aggiunte usando un top-nested
operatore senza specificare un conteggio e utilizzando Ignore2=max(1)
come segnaposto. 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 |