Compartir a través de


percentilew(), percentilesw() (función de agregación)

La percentilew() función calcula una estimación ponderada para el percentil de rango más cercano especificado de la población definida por expr. percentilesw() funciona de forma similar a percentilew(). Sin embargo, percentilesw() puede calcular varios valores de percentil ponderados a la vez, lo que es más eficaz que calcular cada valor de percentil ponderado por separado.

Los percentiles ponderados calculan los percentiles de un conjunto de datos proporcionando un peso a cada valor del conjunto de datos de entrada. En este método, cada valor se considera repetido un número de veces igual a su peso, que luego se usa para calcular el percentil. Al dar más importancia a ciertos valores, los percentiles ponderados proporcionan una manera de calcular percentiles de una manera "ponderada".

Para calcular percentiles no ponderados, consulte percentiles().

Nota:

Esta función se usa junto con el operador summarize.

Sintaxis

percentilew(expr, weightExpr, percentile)

percentilesw(expr, weightExpr, percentiles)

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

Parámetros

Nombre Type Obligatorio Descripción
expr string ✔️ Expresión que se va a usar para el cálculo de agregaciones.
weightExpr long ✔️ Peso que se va a asignar a cada valor.
percentil int o long ✔️ Constante que especifica el percentil.
Percentiles int o long ✔️ Percentiles separados por comas o más.

Devoluciones

Devuelve una tabla con las estimaciones de expr de los percentiles especificados en el grupo, cada uno de ellos en una columna independiente.

Nota:

Para devolver los percentiles en una sola columna, vea Devolver percentiles como una matriz.

Ejemplos

Cálculo de percentiles ponderados

Supongamos que mide repetidamente el tiempo (Duración) que realiza una acción para completarse. En lugar de registrar cada valor de la medida, se registra cada valor de Duration, redondeado a 100 msec y cuántas veces apareció el valor redondeado (BucketSize).

Use summarize percentilesw(Duration, BucketSize, ...) para calcular los percentiles especificados de una manera "ponderada". Trate cada valor de Duration como si se repitiera bucketSize veces en la entrada, sin necesidad de materializar esos registros.

En el ejemplo siguiente se muestran percentiles ponderados. Con el siguiente conjunto de valores de latencia en milisegundos: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }.

Para reducir el ancho de banda y el almacenamiento, realice la agregación previa a los siguientes cubos: { 10, 20, 30, 40, 50, 100 }. Cuente el número de eventos de cada cubo para generar la tabla siguiente:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

La tabla muestra:

  • Ocho eventos en el cubo de 10 ms (correspondiente al subconjunto { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Seis eventos en el cubo de 20 ms (correspondiente al subconjunto { 12, 12, 15, 15, 15, 18 })
  • Tres eventos en el cubo de 30 ms (correspondiente al subconjunto { 21, 22, 26 })
  • Un evento en el cubo de 40 ms (correspondiente al subconjunto { 35 })

En este momento, los datos originales ya no están disponibles. Solo el número de eventos de cada cubo. Para calcular percentiles de estos datos, use la percentilesw() función . Para los percentiles 50, 75 y 99,9, use la consulta siguiente:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

Salida

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

Devolver percentiles como una matriz

En lugar de devolver los valores en columnas individuales, use la percentilesw_array() función para devolver los percentiles en una sola columna del tipo de matriz dinámica.

Sintaxis

percentilesw_array(expr, weightExpr, percentiles)

Parámetros

Nombre Type Obligatorio Descripción
expr string ✔️ Expresión que se va a usar para el cálculo de agregaciones.
Percentiles int, long o dynamic ✔️ Percentiles separados por comas o una matriz dinámica de percentiles. Cada percentil puede ser un valor entero o largo.
weightExpr long ✔️ Peso que se va a asignar a cada valor.

Devoluciones

Devuelve una estimación para expr de los percentiles especificados en el grupo como una sola columna de tipo de matriz dinámica.

Ejemplos

Percentiles separados por comas

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

Salida

percentile_LatencyBucket
[20, 20, 40]

Matriz dinámica de percentiles

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

Salida

percentile_LatencyBucket
[20, 20, 40]