top-nested operator
El top-nested
operador realiza la agregación jerárquica y la selección de valores.
Imagine que tiene una tabla con información de ventas como regiones, vendedores y cantidades vendidas. El top-nested
operador puede ayudarle a responder preguntas complejas, como "¿Cuáles son las cinco principales regiones por ventas y quiénes son los tres principales vendedores de cada una de esas regiones?"
Los datos de origen se particionan en función de los criterios establecidos en la primera top-nested
cláusula, como region. A continuación, el operador elige los registros principales de cada partición mediante una agregación, como agregar cantidades de ventas. Cada cláusula posterior top-nested
refina las particiones creadas por la cláusula anterior, creando una jerarquía de grupos más precisos.
El resultado es una tabla con dos columnas por cláusula. Una columna contiene los valores de creación de particiones, como región, mientras que la otra columna contiene los resultados del cálculo de agregación, como la suma de ventas.
Syntax
T|
top-nested
[ N ] of
Expr [with
others
=
ConstExpr] by
Aggregation [asc
| desc
] [,
top-nested
... ]
Obtenga más información sobre las convenciones de sintaxis.
Parámetros
Nombre | Tipo | Requerido | Descripción |
---|---|---|---|
T | string |
✔️ | Expresión tabular de entrada. |
N. | int |
Número de valores principales que se van a devolver para este nivel de jerarquía. Si se omite, se devuelven todos los valores distintos. | |
Expr | string |
✔️ | Expresión sobre el registro de entrada que indica qué valor se va a devolver para este nivel de jerarquía. Normalmente, hace referencia a una columna de T o implica un cálculo como bin() en una columna. Opcionalmente, establezca un nombre de columna de salida como Name= Expr. |
ConstExpr | string |
Si se especifica, para cada nivel de jerarquía, se agrega un registro con el valor que es la agregación en todos los registros que no lo han hecho en la parte superior. | |
Agregación | string |
Función de agregación aplicada a los registros con el mismo valor expr . El resultado determina los registros principales. Consulte Funciones de agregación admitidas. Opcionalmente, establezca un nombre de columna de salida como Agregación de= nombres. |
Funciones de agregación admitidas
Se admiten las siguientes funciones de agregación:
Nota
También se admite cualquier combinación algebraica de las agregaciones.
Devoluciones
Tabla con dos columnas para cada cláusula. Una columna contiene valores únicos calculados mediante Expr y la otra columna muestra los resultados obtenidos del cálculo de agregación .
Incluir datos de otras columnas
Solo se muestran las columnas especificadas como cláusula top-nested
Expr en la tabla de salida.
Para incluir todos los valores de una columna en un nivel específico:
- No especifique el valor de N.
- Use el nombre de columna como valor de Expr.
- Use
Ignore=max(1)
como valor de Aggregation. - Quite la columna innecesaria
Ignore
con project-away.
Para obtener un ejemplo, consulte Obtención de los eventos más recientes por estado con datos adicionales de otras columnas.
Consideraciones de rendimiento
El número de registros puede crecer exponencialmente con el número de cláusulas y el crecimiento del top-nested
registro es incluso más rápido si no se especifica ningún límite N . Este operador puede consumir una cantidad considerable de recursos.
Si la distribución de la agregación es considerablemente no uniforme, limite el número de valores distintos que se van a devolver especificando N. A continuación, use la with
others
=
especificación ConstExpr para obtener una indicación del peso de todos los demás casos.
Ejemplos
Introducción al top-nested
operador
La siguiente consulta crea particiones de la StormEvents
tabla por la State
columna y calcula la latitud total de cada estado. La consulta selecciona los dos estados principales con la suma de latitud más alta. Dentro de estos dos estados principales, la consulta agrupa los datos por Source
y selecciona los tres orígenes principales con la suma de latitud más alta. Para cada uno de los tres orígenes principales de los dos estados principales, la consulta agrupa los datos por EndLocation
y selecciona con EndLocation
la suma de latitud más 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.
Salida
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Cuerpos de seguridad | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Público | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Observador entrenado | 21279.7083 | SHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Público | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Cuerpos de seguridad | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Observador entrenado | 13997.7124 | CLAUDE | 421.44 |
Mejora de los resultados anidados superiores con datos de otra columna
La consulta siguiente se basa en el ejemplo anterior mediante la introducción de una cláusula adicional top-nested
. En esta nueva cláusula, la ausencia de una especificación numérica da como resultado la extracción de todos los valores distintos de EventType
entre las particiones. La max(1)
función de agregación es simplemente un marcador de posición, lo que representa su resultado irrelevante, por lo que el operador de proyecto quita la Ignore
columna. El resultado muestra todos los tipos de eventos asociados a los datos agregados anteriormente.
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
Salida
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation | EventType |
---|---|---|---|---|---|---|
TEXAS | 123400.51009999994 | Público | 13650.907900000002 | AMARILLO | 246.25979999999998 | Granizo |
TEXAS | 123400.51009999994 | Público | 13650.907900000002 | AMARILLO | 246.25979999999998 | Viento de tormenta |
KANSAS | 87771.235500000068 | Público | 22855.6206 | BUCKLIN | 488.2457 | Inundación |
KANSAS | 87771.235500000068 | Público | 22855.6206 | BUCKLIN | 488.2457 | Viento de tormenta |
KANSAS | 87771.235500000068 | Público | 22855.6206 | BUCKLIN | 488.2457 | Granizo |
TEXAS | 123400.51009999994 | Observador entrenado | 13997.712400000009 | CLAUDE | 421.44 | Granizo |
KANSAS | 87771.235500000068 | Cuerpos de seguridad | 18744.823000000004 | FT SCOTT | 264.858 | Riada |
KANSAS | 87771.235500000068 | Cuerpos de seguridad | 18744.823000000004 | FT SCOTT | 264.858 | Viento de tormenta |
KANSAS | 87771.235500000068 | Cuerpos de seguridad | 18744.823000000004 | FT SCOTT | 264.858 | Inundación |
TEXAS | 123400.51009999994 | Cuerpos de seguridad | 37228.596599999961 | PERRYTON | 289.3178 | Granizo |
... | ... | ... | ... | ... | ... |
Uso with
others
para explorar los datos excluidos
Cuando se incorpora dentro de una top-nested
cláusula , la with
others
especificación introduce un registro adicional que agrega los datos excluidos de los resultados principales. En la consulta siguiente, se crea un registro adicional en las State
columnas y aggregated_State
, que representa la latitud colectiva de todos los estados excepto Kansas y Texas. Además, la EndLocation
columna y aggregated_EndLocation
tienen nueve registros adicionales. Estos registros muestran la latitud combinada de las ubicaciones finales que no se califican como la ubicación superior dentro de cada estado y origen.
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)
Salida
State | aggregated_State | Source | aggregated_Source | EndLocation | aggregated_EndLocation |
---|---|---|---|---|---|
KANSAS | 87771.2355000001 | Cuerpos de seguridad | 18744.823 | FT SCOTT | 264.858 |
KANSAS | 87771.2355000001 | Público | 22855.6206 | BUCKLIN | 488.2457 |
KANSAS | 87771.2355000001 | Observador entrenado | 21279.7083 | SHARON SPGS | 388.7404 |
TEXAS | 123400.5101 | Público | 13650.9079 | AMARILLO | 246.2598 |
TEXAS | 123400.5101 | Cuerpos de seguridad | 37228.5966 | PERRYTON | 289.3178 |
TEXAS | 123400.5101 | Observador entrenado | 13997.7124 | CLAUDE | 421.44 |
KANSAS | 87771.2355000001 | Cuerpos de seguridad | 18744.823 | Todas las demás ubicaciones finales | 18479.965 |
KANSAS | 87771.2355000001 | Público | 22855.6206 | Todas las demás ubicaciones finales | 22367.3749 |
KANSAS | 87771.2355000001 | Observador entrenado | 21279.7083 | Todas las demás ubicaciones finales | 20890.9679 |
TEXAS | 123400.5101 | Público | 13650.9079 | Todas las demás ubicaciones finales | 13404.6481 |
TEXAS | 123400.5101 | Cuerpos de seguridad | 37228.5966 | Todas las demás ubicaciones finales | 36939.2788 |
TEXAS | 123400.5101 | Observador entrenado | 13997.7124 | Todas las demás ubicaciones finales | 13576.2724 |
KANSAS | 87771.2355000001 | Todas las demás ubicaciones finales | 24891.0836 | ||
TEXAS | 123400.5101 | Todas las demás ubicaciones finales | 58523.2932000001 | ||
Todos los demás estados | 1149279.5923 | Todas las demás ubicaciones finales | 1149279.5923 |
En la consulta siguiente se muestran los mismos resultados para el primer nivel usado en el ejemplo anterior.
StormEvents
| where State !in ('TEXAS', 'KANSAS')
| summarize sum(BeginLat)
Salida
sum_BeginLat |
---|
1149279.5923 |
Ordenar resultados jerárquicos
Para lograr un criterio de ordenación completo, la consulta siguiente usa la ordenación basada en índices para cada valor dentro del nivel de jerarquía actual, por grupo. Esta ordenación está orientada a organizar el resultado según el nivel anidado final, en este caso el 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
Salida
State | Source | EndLocations | endLocationSums | índices |
---|---|---|---|---|
TEXAS | Observador entrenado | CLAUDE | 421.44 | 0 |
TEXAS | Observador entrenado | AMARILLO | 316.8892 | 1 |
TEXAS | Observador entrenado | DALHART | 252.6186 | 2 |
TEXAS | Observador entrenado | PERRYTON | 216.7826 | 3 |
TEXAS | Cuerpos de seguridad | PERRYTON | 289.3178 | 0 |
TEXAS | Cuerpos de seguridad | LEAKEY | 267.9825 | 1 |
TEXAS | Cuerpos de seguridad | BRACKETTVILLE | 264.3483 | 2 |
TEXAS | Cuerpos de seguridad | GILMER | 261.9068 | 3 |
KANSAS | Observador entrenado | SHARON SPGS | 388.7404 | 0 |
KANSAS | Observador entrenado | ATWOOD | 358.6136 | 1 |
KANSAS | Observador entrenado | LENORA | 317.0718 | 2 |
KANSAS | Observador entrenado | SCOTT CITY | 307.84 | 3 |
KANSAS | Público | BUCKLIN | 488.2457 | 0 |
KANSAS | Público | ASHLAND | 446.4218 | 1 |
KANSAS | Público | PROTECCIÓN | 446.11 | 2 |
KANSAS | Público | PARQUE ESTATAL DE MEADE | 371.1 | 3 |
Obtención de los eventos más recientes por estado con datos adicionales de otras columnas
En la consulta siguiente se muestra cómo recuperar los dos eventos más recientes para cada estado de EE. UU. junto con los detalles pertinentes del evento. Observe el uso de dentro de determinadas columnas, identificadas por Ignore*
, que ayuda a propagar datos a través de max(1)
la consulta sin imponer ninguna lógica de selección.
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.
Obtención de los registros más recientes por identidad con datos adicionales de otras columnas
En la consulta siguiente se muestra cómo extraer los registros más recientes por identidad y se basa en los conceptos introducidos en el ejemplo anterior. La primera top-nested
cláusula particiona los datos por valores distintos de id
. La cláusula subsiguiente identifica los dos registros más recientes basados en para timestamp
cada id
. Otra información se anexa mediante un operador junto con un top-nested
recuento no especificado y la agregación arbitraria max(1)
. Por último, las columnas de agregación innecesarias se quitan mediante el 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.
Salida
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 |
Contenido relacionado
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de