Complemento pivot

Gira una tabla convirtiendo los valores únicos de una columna de la tabla de entrada en varias columnas de la tabla de salida y realiza agregaciones según sea necesario en los valores de columna restantes que aparecerán en la salida final.

Nota

Si no se especifica OutputSchema, el esquema de salida del pivot complemento se basa en los datos de entrada. Por lo tanto, varias ejecuciones del complemento que usan diferentes entradas de datos pueden generar un esquema de salida diferente. Esto también significa que la consulta que hace referencia a columnas desempaquetadas se puede convertir en "rota" en cualquier momento. Por este motivo, no se recomienda usar este complemento para trabajos de automatización sin especificar la función OutputSchema.

Syntax

T | evaluate pivot(pivotColumn[, aggregationFunction] [,column1[,column2 ... ]]) [:OutputSchema]

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
pivotColumn string ✔️ Columna que se va a girar. Cada valor único de esta columna será una columna de la tabla de salida.
aggregationFunction string Función de agregación que se usa para agregar varias filas de la tabla de entrada a una sola fila de la tabla de salida. Funciones admitidas actualmente: , , , , avg()stdev()variance()make_list()sum()make_bag()dcount(), , . count()make_set()take_any()max()min() El valor predeterminado es count().
column1, column2, ... string Nombre de columna o lista separada por comas de nombres de columna. La tabla de salida contendrá una columna adicional por cada columna especificada. El valor predeterminado es todas las columnas distintas de la columna dinamizada y la columna de agregación.
OutputSchema Nombres y tipos de las columnas esperadas de la salida del pivot complemento.

Sintaxis: (ColumnName:ColumnType [, ...] )

Al especificar el esquema esperado, no es necesario ejecutar primero la consulta real para explorar el esquema. Se produce un error si el esquema en tiempo de ejecución no coincide con el esquema OutputSchema .

Devoluciones

Pivot devuelve la tabla rotada con columnas especificadas (columna1, columna2, ...) además de todos los valores únicos de las columnas dinámicas. Cada celda de las columnas dinamizadas contendrá el cálculo de la función de agregado.

Ejemplos

Dinamización mediante una columna

Para cada EventType y State a partir de "AL", cuente el número de eventos de este tipo en este estado.

StormEvents
| project State, EventType
| where State startswith "AL"
| where EventType has "Wind"
| evaluate pivot(State)

Salida

EventType ALABAMA ALASKA
Viento de tormenta 352 1
Viento fuerte 0 95
Frío extremo/frío del viento 0 10
Viento fuerte 22 0

Dinamización mediante una columna con función de agregación

Para cada EventType y State a partir de "AR", se muestra el número total de muertes directas.

StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect))

Salida

EventType ARKANSAS ARIZONA
Lluvia intensa 1 0
Viento de tormenta 1 0
Lightning 0 1
Riada 0 6
Viento fuerte 1 0
Heat (Calor) 3 0

Dinamización mediante una columna con función de agregación y una sola columna adicional

El resultado es idéntico al ejemplo anterior.

StormEvents
| where State startswith "AR"
| project State, EventType, DeathsDirect
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType)

Salida

EventType ARKANSAS ARIZONA
Lluvia intensa 1 0
Viento de tormenta 1 0
Lightning 0 1
Riada 0 6
Viento fuerte 1 0
Heat (Calor) 3 0

Especificar la columna dinamizada, la función de agregación y varias columnas adicionales

Para cada tipo de evento, origen y estado, suma el número de muertes directas.

StormEvents
| where State startswith "AR"
| where DeathsDirect > 0
| evaluate pivot(State, sum(DeathsDirect), EventType, Source)

Salida

EventType Source ARKANSAS ARIZONA
Lluvia intensa Administrador de emergencia 1 0
Viento de tormenta Administrador de emergencia 1 0
Lightning Periódico 0 1
Riada Observador entrenado 0 2
Riada Medios de difusión 0 3
Riada Periódico 0 1
Viento fuerte Cuerpos de seguridad 1 0
Heat (Calor) Periódico 3 0

Dinamización con un esquema de salida definido por la consulta

En el ejemplo siguiente se seleccionan columnas específicas en la tabla StormEvents. Usa una definición de esquema explícita que permite evaluar varias optimizaciones antes de ejecutar la consulta real.

StormEvents
| project State, EventType
| where EventType has "Wind"
| evaluate pivot(State): (EventType:string, ALABAMA:long, ALASKA:long)

Salida

EventType ALABAMA ALASKA
Viento de tormenta 352 1
Viento fuerte 0 95
Viento de tormenta marina 0 0
Viento fuerte 22 0
Frío extremo/frío del viento 0 10
Frío/frío del viento 0 0
Viento fuerte marino 0 0
Viento alto marino 0 0