Compartir a través de


percentile(), percentiles() (función de agregación)

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

La percentile() función calcula una estimación para el percentil de rango más cercano especificado de la población definida por expr. La precisión depende de la densidad de población en la región del percentil.

percentiles() funciona de forma similar a percentile(). Sin embargo, percentiles() puede calcular varios valores de percentil a la vez, lo que es más eficaz que calcular cada valor de percentil por separado.

Para calcular percentiles ponderados, consulte percentilesw()..

Nota:

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

Sintaxis

percentile(percentil expr, )

percentiles(percentiles expr, )

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.
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 del percentil único

En el ejemplo siguiente se muestra el valor de DamageProperty ser mayor que el 95 % del conjunto de muestras y menor que el 5 % del conjunto de muestras.

StormEvents | summarize percentile(DamageProperty, 95) by State

Salida

La tabla de resultados que se muestra incluye solo las primeras 10 filas.

Valor percentile_DamageProperty_95
ATLÁNTICO SUR 0
FLORIDA 40000
GEORGIA 143333
MISISIPÍ 80000
AMERICAN SAMOA 250000
KENTUCKY 35000
OHIO 150 000
KANSAS 51392
MÍCHIGAN 49167
ALABAMA 50000

Cálculo de varios percentiles

En el ejemplo siguiente se muestra el valor de DamageProperty calculado simultáneamente con 5, 50 (mediana) y 95.

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

Salida

La tabla de resultados que se muestra incluye solo las primeras 10 filas.

Valor percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLÁNTICO SUR 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISISIPÍ 0 0 80000
AMERICAN SAMOA 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150 000
KANSAS 0 0 51392
MÍCHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

Devolver percentiles como una matriz

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

Sintaxis

percentiles_array(percentiles expr, )

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.

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

Se pueden obtener varios percentiles como una matriz en una sola columna dinámica, en lugar de en varias columnas como con percentiles().

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

Salida

La tabla de resultados muestra solo las primeras 10 filas.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Matriz dinámica de percentiles

Los percentiles para percentiles_array se pueden especificar en una matriz dinámica de números enteros o de punto flotante. La matriz debe ser constante, pero no tiene que ser literal.

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

Salida

La tabla de resultados muestra solo las primeras 10 filas.

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

Percentil de clasificación más cercana

El percentil P (0 <P<= 100) de una lista de valores ordenados, ordenados en orden ascendente, es el valor más pequeño de la lista. El porcentaje P de los datos es menor o igual que el valor de percentil P (en el artículo de Wikipedia sobre percentiles).

Defina percentiles 0 para ser el miembro más pequeño de la población.

Nota:

Dada la naturaleza aproximada del cálculo, es posible que el valor devuelto real no sea miembro de la población. La definición de clasificación más cercana significa que P=50 no se ajusta a la definición interpolativa de la mediana. Al evaluar la importancia de esta discrepancia para la aplicación específica, se debe tener en cuenta el tamaño de la población y un error de estimación.

Error de estimación en percentiles

El agregado de percentiles proporciona un valor aproximado mediante T-Digest.

Nota:

  • Los límites en el error de estimación varían con el valor del percentil solicitado. La mejor precisión es en ambos extremos de la escala [0..100]. Los percentiles 0 y 100 son los valores mínimos y máximos exactos de la distribución. La precisión se reduce gradualmente hacia el centro de la escala. Es peor en la mediana y se limita al 1 %.
  • Los límites de los errores se observan en el rango, no en el valor. Supongamos que percentil(X, 50) devolvió un valor de Xm. La estimación garantiza que al menos el 49 % y al menos el 51 % de los valores de X son menores o iguales que Xm. No hay ningún límite teórico en la diferencia entre Xm y el valor medio real de X.
  • La estimación a veces puede dar lugar a un valor preciso, pero no hay condiciones confiables para definir cuándo será el caso.