Operador summarize

Crea una tabla que agrega el contenido de la tabla de entrada.

Sintaxis

T| summarize [ SummarizeParameters ] [[Column=] Aggregation [, ...]] [by [Column=] GroupExpression [, ...]]

Más información sobre las convenciones de sintaxis.

Parámetros

Nombre Tipo Requerido Descripción
Columna string Nombre de la columna de resultado. El valor predeterminado es un nombre derivado de la expresión.
Agregación string ✔️ una llamada a una función de agregación como count() o avg(), con nombres de columna como argumentos.
GroupExpression escalar ✔️ expresión escalar que puede hacer referencia a los datos de entrada. La salida tendrá tantos registros como valores únicos tienen todas las expresiones de grupo.
SummarizeParameters string Cero o más parámetros (separados por espacios) con el formato Name=Value que controlan el comportamiento. Consulte parámetros admitidos.

Nota:

Cuando la tabla de entrada está vacía, el resultado depende de si se usa GroupExpression:

  • Si no se especifica GroupExpression, la salida será una fila única (vacía).
  • Si se especifica GroupExpression, la salida no tendrá ninguna fila.

Parámetros admitidos

Nombre Descripción
hint.num_partitions Especifica el número de particiones usadas para compartir la carga de consultas en los nodos del clúster. Consulte la consulta aleatoria.
hint.shufflekey=<key> La consulta shufflekey comparte la carga de consultas en los nodos del clúster mediante una clave para crear particiones de datos. Consulte la consulta aleatoria.
hint.strategy=shuffle La consulta de estrategia shuffle comparte la carga de consultas en los nodos del clúster, donde cada nodo procesará una partición de los datos. Consulte la consulta aleatoria.

Devoluciones

Las filas de entrada están organizadas en grupos que tienen los mismos valores que las expresiones by . A continuación, las funciones de agregación especificadas se calculan sobre cada grupo, generando una fila para cada grupo. El resultado contiene las columnas by y también al menos una columna para cada agregación procesada. (Algunas funciones de agregación devuelven varias columnas.)

El resultado tiene tantas filas como el número de combinaciones únicas de los valores de by (que puede ser cero). Si no se especifica ninguna clave de grupo, el resultado tiene un único registro.

Para resumir intervalos de valores numéricos, use bin() para reducir los intervalos a valores discretos.

Nota:

  • Aunque puede proporcionar expresiones arbitrarias para las expresiones de agregación y las de agrupación, resulta más eficaz usar nombres de columna simples, o bien aplicar bin() a una columna numérica.
  • Ya no se admiten las ejecuciones de discretizaciones automáticas cada hora para las columnas de datetime. Use la discretización explícita en su lugar. Por ejemplo, summarize by bin(timestamp, 1h).

Valores predeterminados de agregaciones

En la siguiente tabla se resumen los valores predeterminados de las agregaciones:

Operador Valor predeterminado
count(), countif(), dcount(), dcountif(), count_distinct(), sum(), sumif(), variance(), varianceif(), stdev(), stdevif() 0
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() matriz dinámica vacía ([])
Todos los demás null

Nota

Al aplicar estos agregados a entidades que incluyen valores NULL, se omiten los valores NULL y no se factoriza en el cálculo. Para obtener ejemplos, vea Agregados valores predeterminados.

Ejemplos

Resumen del precio por fruta y proveedor.

Combinación única

La consulta siguiente determina qué combinaciones únicas de State y EventType hay para tormentas que dieron lugar a lesiones directas. No hay ninguna función de agregación, solo claves de agrupación. La salida solo mostrará las columnas de esos resultados.

StormEvents
| where InjuriesDirect > 0
| summarize by State, EventType

Salida

En la tabla siguiente solo se muestran las 5 primeras filas. Para ver la salida completa, ejecute la consulta.

State EventType
TEXAS Viento de tormenta
TEXAS Riada
TEXAS Clima de invierno
TEXAS Viento fuerte
TEXAS Inundación
... ...

Marca de tiempo mínima y máxima

Busca las tormentas y aguaceros con precipitaciones mínimas y máximas en Hawái. No hay ninguna cláusula de agrupar por, así que hay una sola fila en la salida:

StormEvents
| where State == "HAWAII" and EventType == "Heavy Rain"
| project Duration = EndTime - StartTime
| summarize Min = min(Duration), Max = max(Duration)

Salida

Min Max
01:08:00 11:55:00

Recuento de valores únicos

Cree una fila para cada continente que muestre un recuento de las ciudades en las que suceden las actividades. Dado que hay pocos valores para "continente", no se necesita ninguna función de agrupación en la cláusula "by":

StormEvents
| summarize TypesOfStorms=dcount(EventType) by State
| sort by TypesOfStorms

Salida

En la tabla siguiente solo se muestran las 5 primeras filas. Para ver la salida completa, ejecute la consulta.

State TypesOfStorms
TEXAS 27
CALIFORNIA 26
PENSILVANIA 25
GEORGIA 24
ILLINOIS 23
... ...

Histograma

En el ejemplo siguiente se calcula un histograma con los tipos de eventos de tormenta que indicaban tormentas que duraban más de 1 día. Como Duration tiene muchos valores, debe usar bin() para agrupar los valores en intervalos de 1 día.

StormEvents
| project EventType, Duration = EndTime - StartTime
| where Duration > 1d
| summarize EventCount=count() by EventType, Length=bin(Duration, 1d)
| sort by Length

Salida

EventType Length EventCount
Sequía 30.00:00:00 1646
Wildfire 30.00:00:00 11
Heat (Calor) 30.00:00:00 14
Inundación 30.00:00:00 20
Lluvia intensa 29.00:00:00 42
... ... ...

Valores predeterminados de los agregados

Cuando la entrada del operador summarize tiene al menos una clave de agrupación vacía, el resultado también está vacío.

Cuando la entrada del operador summarize no tiene ninguna clave de agrupación vacía, el resultado son los valores predeterminados de los agregados que se usan en summarizePara obtener más información, vea Valores predeterminados de agregaciones.

datatable(x:long)[]
| summarize any_x=take_any(x), arg_max_x=arg_max(x, *), arg_min_x=arg_min(x, *), avg(x), buildschema(todynamic(tostring(x))), max(x), min(x), percentile(x, 55), hll(x) ,stdev(x), sum(x), sumif(x, x > 0), tdigest(x), variance(x)

Salida

any_x arg_max_x arg_min_x avg_x schema_x max_x min_x percentile_x_55 hll_x stdev_x sum_x sumif_x tdigest_x variance_x
NaN 0 0 0 0

El resultado de avg_x(x) es NaN debido a dividirlo por 0.

datatable(x:long)[]
| summarize  count(x), countif(x > 0) , dcount(x), dcountif(x, x > 0)

Salida

count_x countif_ dcount_x dcountif_x
0 0 0 0
datatable(x:long)[]
| summarize  make_set(x), make_list(x)

Salida

set_x list_x
[] []

El promedio agregado suma todos los valores que no son null y solo cuenta aquellos que formaron parte del cálculo (no se tienen en cuenta los valores null).

range x from 1 to 4 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize sum(y), avg(y)

Salida

sum_y avg_y
15 5

El recuento normal contará los valores NULL:

range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize count(y)

Salida

count_y
2
range x from 1 to 2 step 1
| extend y = iff(x == 1, real(null), real(5))
| summarize make_set(y), make_set(y)

Salida

set_y set_y1
[5,0] [5,0]