operador top-nested
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
O top-nested
operador executa a agregação hierárquica e a seleção de valor.
Imagine que você tenha uma tabela com informações de vendas, como regiões, vendedores e valores vendidos. O top-nested
operador pode ajudá-lo a responder a perguntas complexas, como "Quais são as cinco principais regiões por vendas e quem são os três principais vendedores em cada uma dessas regiões?"
Os dados de origem são particionados com base nos critérios definidos na primeira top-nested
cláusula, como região. Em seguida, o operador seleciona os principais registros em cada partição usando uma agregação, como adicionar valores de vendas. Cada cláusula subsequente top-nested
refina as partições criadas pela cláusula anterior, criando uma hierarquia de grupos mais precisos.
O resultado é uma tabela com duas colunas por cláusula. Uma coluna contém os valores de particionamento, como região, enquanto a outra coluna contém os resultados do cálculo de agregação, como a soma das vendas.
Sintaxe
T top-nested
|
[ N ] of
Expr [ others
with
=
ConstExpr] by
Agregação [asc
| desc
] [,
top-nested
... ]
Saiba mais sobre as convenções de sintaxe.
Parâmetros
Nome | Digitar | Obrigatória | Descrição |
---|---|---|---|
T | string |
✔️ | A expressão tabular de entrada. |
N | int |
O número de valores principais a serem retornados para esse nível de hierarquia. Se omitido, todos os valores distintos serão retornados. | |
Expr | string |
✔️ | Uma expressão sobre o registro de entrada que indica qual valor retornar para esse nível de hierarquia. Normalmente, refere-se a uma coluna de T ou envolve um cálculo como bin() em uma coluna. Opcionalmente, defina um nome de coluna de saída como Nome = Expr. |
ConstExpr | string |
Se especificado, para cada nível de hierarquia, um registro é adicionado com o valor que é a agregação de todos os registros que não chegaram ao topo. | |
Agregação | string |
A função de agregação aplicada a registros com o mesmo valor Expr . O resultado determina os principais registros. Consulte Funções de agregação suportadas. Opcionalmente, defina um nome de coluna de saída como Agregação de Nomes = . |
Funções de agregação com suporte
As seguintes funções de agregação são suportadas:
Observação
Qualquer combinação algébrica das agregações também é suportada.
Devoluções
Uma tabela com duas colunas para cada cláusula. Uma coluna contém valores exclusivos calculados usando Expr e a outra coluna mostra os resultados obtidos do cálculo de agregação .
Usando a with
others
cláusula
Usar o top-nested
operador com with
others
adiciona a capacidade de ver seu conteúdo principal contextualizado em um conjunto de dados mais amplo. Avaliar seus dados dessa maneira é valioso ao renderizar os dados visualmente.
Incluir dados de outras colunas
Somente as colunas especificadas como uma top-nested
cláusula Expr são exibidas na tabela de saída.
Para incluir todos os valores de uma coluna em um nível específico:
- Não especifique o valor de N.
- Use o nome da coluna como o valor de Expr.
- Use
Ignore=max(1)
como o valor de Agregação. - Remova a coluna desnecessária
Ignore
com project-away.
Para obter um exemplo, consulte Eventos mais recentes por estado com outros dados de coluna.
Considerações sobre o desempenho
O número de registros pode crescer exponencialmente com o número de cláusulas, e o crescimento do top-nested
registro é ainda mais rápido se o parâmetro N não for especificado. Este operador pode consumir uma quantidade considerável de recursos.
Se a distribuição de agregação for irregular, limite o número de valores distintos a serem retornados especificando N. Em seguida, use a with
others
=
cláusula ConstExpr para ter uma noção do peso de todos os outros casos.
Exemplos
Principais estados danificados, tipos de eventos e locais finais por danos materiais
A consulta a seguir particiona a StormEvents
tabela pela State
coluna e calcula o dano total à propriedade para cada estado. A consulta seleciona os dois principais estados com a maior quantidade de danos materiais. Nesses dois estados principais, a consulta agrupa os dados e EventType
seleciona os três principais tipos de evento com mais danos. Em seguida, a consulta agrupa os dados e EndLocation
seleciona o EndLocation
com o maior dano. Apenas um EndLocation
valor aparece nos resultados, possivelmente devido à grande natureza dos eventos de tempestade ou por não documentar o local final.
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
Saída
Estado | EventType | EndLocation | EstadoTotalDamage | EventTypeTotalDamage | EndLocationDamage |
---|---|---|---|---|---|
CALIFÓRNIA | Wildfire | 1445937600 | 1326315000 | 1326315000 | |
CALIFÓRNIA | Vento Forte | 1445937600 | 61320000 | 61320000 | |
CALIFÓRNIA | Fluxo de detritos | 1445937600 | 48000000 | 48000000 | |
OKLAHOMA | Tempestade de gelo | 915470300 | 826000000 | 826000000 | |
OKLAHOMA | Tempestade de inverno | 915470300 | 40027000 | 40027000 | |
OKLAHOMA | Saturação | PLATAFORMA | 915470300 | 21485000 | 20000000 |
Os cinco principais estados com danos with
others
materiais agrupados
O exemplo a seguir usa o top-nested
operador para identificar os cinco principais estados com mais danos à propriedade e usa a with
others
cláusula para agrupar propriedades danificadas para todos os outros estados. Em seguida, ele visualiza a propriedade danificada para os cinco principais estados e todos os outros estados como um piechart
usando o render
comando.
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Saída
Eventos mais recentes por estado com outros dados de coluna
A consulta a seguir recupera os dois eventos mais recentes para cada estado dos EUA com detalhes relevantes do evento. Ele usa max(1)
dentro de determinadas colunas para propagar dados sem usar a lógica de seleção aninhada superior. As colunas de agregação geradas Ignore
são removidas usando 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.
Registros mais recentes por identidade com outros dados de coluna
O exemplo a seguir top-nested
extrai os registros mais recentes por identidade e se baseia nos conceitos introduzidos no exemplo anterior. A primeira top-nested
cláusula particiona os dados por valores distintos de id
uso Ignore0=max(1)
como espaço reservado. Para cada id
, ele identifica os dois registros mais recentes com base no timestamp
. Outras informações são acrescentadas usando um top-nested
operador sem especificar uma contagem e usando Ignore2=max(1)
como um espaço reservado. Por fim, colunas de agregação desnecessárias são removidas usando o project-away
operador.
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.
Saída
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 |