percentilew(), percentilesw() (función de agregación)
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
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] |