Partage via


plug-in rolling_percentile()

Retourne une estimation du centile spécifié de la population ValueColumn dans une fenêtre de taille BinsPerWindow propagée par BinSize.

Le plug-in est appelé avec l’opérateur evaluate .

Syntaxe

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

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
T string ✔️ Expression tabulaire d’entrée.
ValueColumn string ✔️ Nom de la colonne utilisée pour calculer les centiles.
Centile int, long ou réel ✔️ Scalaire avec le centile à calculer.
IndexColumn string ✔️ Nom de la colonne sur laquelle exécuter la fenêtre propagée.
BinSize int, long, real, datetime ou timespan ✔️ Scalaire avec la taille des bacs à appliquer sur IndexColumn.
BinsPerWindow int ✔️ Nombre de bacs inclus dans chaque fenêtre.
dim1, dim2, ... string Liste des colonnes de dimensions à découper.

Retours

Retourne une table avec une ligne par bac (et une combinaison de dimensions si spécifiée) qui a le centile propagé de valeurs dans la fenêtre se terminant par la corbeille (inclusive). Le schéma de table de sortie est le suivant :

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Exemples

Valeur médiane de 3 jours propagée par jour

La requête suivante calcule une valeur médiane de 3 jours en granularité quotidienne. Chaque ligne de la sortie représente la valeur médiane des 3 derniers bacs (jours), y compris le bac lui-même.

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)

Sortie

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

Valeur médiane de 3 jours propagée par jour par dimension

Le même exemple ci-dessus, mais calcule également la fenêtre propagée partitionnée pour chaque valeur de la dimension.

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)

Sortie

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