Compartir a través de


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

Applies to: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

The percentile() function calculates an estimate for the specified nearest-rank percentile of the population defined by 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.

To calculate weighted percentiles, see percentilesw().

Note

This function is used in conjunction with the summarize operator.

Syntax

percentile( expr,percentile)

percentiles( expr,percentiles)

Learn more about syntax conventions.

Parameters

Name Type Required Description
expr string ✔️ Expresión que se va a usar para el cálculo de agregaciones.
percentile real ✔️ Constante que especifica el percentil.
percentiles real ✔️ Percentiles separados por comas o más.

Returns

Returns a table with the estimates for expr of the specified percentiles in the group, each in a separate column.

Note

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

Examples

Los ejemplos de esta sección muestran cómo usar la sintaxis para ayudarle a empezar.

The examples in this article use publicly available tables in the help cluster, such as the StormEvents table in the Samples database.

The examples in this article use publicly available tables, such as the Weather table in the Weather analytics sample gallery. Es posible que tenga que modificar el nombre de la tabla en la consulta de ejemplo para que coincida con la tabla del área de trabajo.

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

Output

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

State percentile_DamageProperty_95
ATLANTIC SOUTH 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
AMERICAN SAMOA 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 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

Output

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

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIC SOUTH 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
AMERICAN SAMOA 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 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.

Syntax

percentiles_array( expr,percentiles)

Parameters

Name Type Required Description
expr string ✔️ Expresión que se va a usar para el cálculo de agregaciones.
percentiles real o dinámico ✔️ Percentiles separados por comas o una matriz dinámica de percentiles. Cada percentil debe ser un valor real.

Returns

Returns an estimate for expr of the specified percentiles in the group as a single column of dynamic array type.

Examples

Comma-separated percentiles

Multiple percentiles can be obtained as an array in a single dynamic column, instead of in multiple columns as with percentiles().

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

Output

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

Output

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
... ... ...

Nearest-rank percentile

P-th percentile (0 <P<= 100) of a list of ordered values, sorted in ascending order, is the smallest value in the list. The P percent of the data is less or equal to P-th percentile value (from Wikipedia article on percentiles).

Define 0-th percentiles to be the smallest member of the population.

Note

Dada la naturaleza aproximada del cálculo, es posible que el valor devuelto real no sea miembro de la población. Nearest-rank definition means that P=50 does not conform to the interpolative definition of the median. When evaluating the significance of this discrepancy for the specific application, the size of the population and an estimation error should be taken into account.

Error de estimación en percentiles

The percentiles aggregate provides an approximate value using T-Digest.

Note

  • 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.