Compartir a través de


complemento rolling_percentile()

Devuelve una estimación para el percentil especificado de la población ValueColumn en una ventana de tamaño BinsPerWindow gradual (deslizante) por BinSize.

El complemento se invoca con el evaluate operador .

Sintaxis

Trolling_percentile(| evaluate ValueColumn, Percentile, IndexColumn, BinSize, BinsPerWindow [, dim1, dim2, ...])

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

Parámetros

Nombre Type Obligatorio Descripción
T string ✔️ Expresión tabular de entrada.
ValueColumn string ✔️ Nombre de la columna utilizada para calcular los percentiles.
Percentil int, long o real ✔️ Escalar con el percentil que se va a calcular.
IndexColumn string ✔️ Nombre de la columna sobre la que se va a ejecutar la ventana gradual.
BinSize int, long, real, datetime o timespan ✔️ Escalar con el tamaño de los cubos que se van a aplicar a través de IndexColumn.
BinsPerWindow int ✔️ Número de cubos incluidos en cada ventana.
dim1, dim2, ... string Lista de las columnas de dimensiones por las que se va a segmentar.

Devoluciones

Devuelve una tabla con una fila por cada bin (y combinación de dimensiones si se especifica) que tiene el percentil gradual de valores en la ventana que termina en el contenedor (ambos incluidos). El esquema de tabla de salida es:

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Ejemplos

Valor medio de 3 días gradual por día

La consulta siguiente calcula un valor medio de 3 días en granularidad diaria. Cada fila de la salida representa el valor medio de los últimos 3 cubos (días), incluido el propio intervalo.

let T = 
    range idx from 0 to 24 * 10 - 1 step 1
    | project Timestamp = datetime(2018-01-01) + 1h * idx, val=idx + 1
    | extend EvenOrOdd = iff(val % 2 == 0, "Even", "Odd");
T  
| evaluate rolling_percentile(val, 50, Timestamp, 1d, 3)

Salida

Marca de tiempo rolling_3_percentile_val_50
2018-01-01 00:00:00.0000000 12
2018-01-02 00:00:00.0000000 24
2018-01-03 00:00:00.0000000 36
2018-01-04 00:00:00.0000000 60
2018-01-05 00:00:00.0000000 84
2018-01-06 00:00:00.0000000 108
2018-01-07 00:00:00.0000000 132
2018-01-08 00:00:00.0000000 156
2018-01-09 00:00:00.0000000 180
2018-01-10 00:00:00.0000000 204

Valor medio de 3 días gradual por dimensión

El mismo ejemplo anterior, pero ahora también calcula la ventana gradual particionada para cada valor de la dimensión.

let T = 
    range idx from 0 to 24 * 10 - 1 step 1
    | project Timestamp = datetime(2018-01-01) + 1h * idx, val=idx + 1
    | extend EvenOrOdd = iff(val % 2 == 0, "Even", "Odd");
T  
| evaluate rolling_percentile(val, 50, Timestamp, 1d, 3, EvenOrOdd)

Salida

Marca de tiempo EvenOrOdd rolling_3_percentile_val_50
2018-01-01 00:00:00.0000000 Even 12
2018-01-02 00:00:00.0000000 Even 24
2018-01-03 00:00:00.0000000 Even 36
2018-01-04 00:00:00.0000000 Even 60
2018-01-05 00:00:00.0000000 Even 84
2018-01-06 00:00:00.0000000 Even 108
2018-01-07 00:00:00.0000000 Even 132
2018-01-08 00:00:00.0000000 Even 156
2018-01-09 00:00:00.0000000 Even 180
2018-01-10 00:00:00.0000000 Even 204
2018-01-01 00:00:00.0000000 Extraño 11
2018-01-02 00:00:00.0000000 Extraño 23
2018-01-03 00:00:00.0000000 Extraño 35
2018-01-04 00:00:00.0000000 Extraño 59
2018-01-05 00:00:00.0000000 Extraño 83
2018-01-06 00:00:00.0000000 Extraño 107
2018-01-07 00:00:00.0000000 Extraño 131
2018-01-08 00:00:00.0000000 Extraño 155
2018-01-09 00:00:00.0000000 Extraño 179
2018-01-10 00:00:00.0000000 Extraño 203