Compartilhar via


rolling_percentile() plugin

Retorna uma estimativa para o percentil especificado da população ValueColumn em uma janela de tamanho BinsPerWindow rolante (deslizante) por BinSize.

O plugin é invocado com o evaluate operador.

Sintaxe

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

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
T string ✔️ A expressão tabular de entrada.
ValueColumn string ✔️ O nome da coluna usada para calcular os percentis.
Percentil int, longo ou real ✔️ Escalar com o percentil a ser calculado.
ÍndiceColuna string ✔️ O nome da coluna sobre a qual executar a janela de rolagem.
Tamanho do Binário int, long, real, datetime ou timespan ✔️ Escalar com o tamanho dos compartimentos a serem aplicados sobre o IndexColumn.
BinsPerWindow int ✔️ O número de compartimentos incluídos em cada janela.
dim1, dim2, ... string Uma lista das colunas de dimensões pelas quais fatiar.

Devoluções

Retorna uma tabela com uma linha por cada compartimento (e combinação de dimensões, se especificado) que tem o percentil de rolagem de valores na janela que termina no compartimento (inclusive). O esquema da tabela de saída é:

ÍndiceColuna DIM1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Exemplos

Valor médio de 3 dias por dia

A próxima consulta calcula um valor mediano de 3 dias na granularidade diária. Cada linha na saída representa o valor mediano para os últimos 3 compartimentos (dias), incluindo o próprio compartimento.

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)

Saída

Timestamp 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 médio de 3 dias por dia por dimensão

Mesmo exemplo de cima, mas agora também calcula a janela de rolagem particionada para cada valor da dimensão.

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)

Saída

Timestamp 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 Ímpar 11
2018-01-02 00:00:00.0000000 Ímpar 23
2018-01-03 00:00:00.0000000 Ímpar 35
2018-01-04 00:00:00.0000000 Ímpar 59
2018-01-05 00:00:00.0000000 Ímpar 83
2018-01-06 00:00:00.0000000 Ímpar 107
2018-01-07 00:00:00.0000000 Ímpar 131
2018-01-08 00:00:00.0000000 Ímpar 155
2018-01-09 00:00:00.0000000 Ímpar 179
2018-01-10 00:00:00.0000000 Ímpar 203