rolling_percentile()-Plug-In

Gibt eine Schätzung für das angegebene Perzentil der ValueColumn-Auffüllung in einem rollierenden (gleitenden) BinsPerWindow-Größenfenster pro BinSize zurück.

Das Plug-In wird mit dem evaluate Operator aufgerufen.

Syntax

T| evaluaterolling_percentile(ValueColumn,Perzentil,IndexColumn,BinSize,BinsPerWindow [,dim1,dim2, ...] )

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich Beschreibung
T string ✔️ Der tabellarische Eingabeausdruck.
ValueColumn string ✔️ Der Name der Spalte, die zum Berechnen der Quantile verwendet wird.
Perzentil int, long oder real ✔️ Skalar mit dem zu berechnenden Perzentil.
IndexColumn string ✔️ Der Name der Spalte, über die das rollierende Fenster ausgeführt werden soll.
BinSize int, long, real, datetime oder timespan ✔️ Skalar mit der Größe der Behälter, die auf die IndexColumn angewendet werden sollen.
BinsPerWindow int ✔️ Die Anzahl der in jedem Fenster enthaltenen Behälter.
dim1, dim2, ... string Eine Liste der Dimensionsspalten, nach der segmentiert werden soll.

Gibt zurück

Gibt eine Tabelle mit einer Zeile pro Behälter (und einer Kombination von Dimensionen, falls angegeben) zurück, die das rollierende Perzentil der Werte im Fenster enthält, das auf dem Behälter endet (inklusive). Das Schema der Ausgabetabelle lautet:

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Beispiele

Rollierender 3-Tage-Medianwert pro Tag

Die nächste Abfrage berechnet einen 3-Tage-Medianwert in der täglichen Granularität. Jede Zeile in der Ausgabe stellt den Medianwert für die letzten 3 Behälter (Tage) dar, einschließlich des Behälters selbst.

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)

Ausgabe

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

Rollierender 3-Tage-Medianwert pro Tag nach Dimension

Dasselbe Beispiel von oben berechnet jetzt aber auch das rollierende Fenster, das für jeden Wert der Dimension partitioniert wird.

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)

Ausgabe

Timestamp EvenOrOdd rolling_3_percentile_val_50
2018-01-01 00:00:00.0000000 Sogar 12
2018-01-02 00:00:00.0000000 Sogar 24
2018-01-03 00:00:00.0000000 Sogar 36
2018-01-04 00:00:00.0000000 Sogar 60
2018-01-05 00:00:00.0000000 Sogar 84
2018-01-06 00:00:00.0000000 Sogar 108
2018-01-07 00:00:00.0000000 Sogar 132
2018-01-08 00:00:00.0000000 Sogar 156
2018-01-09 00:00:00.0000000 Sogar 180
2018-01-10 00:00:00.0000000 Sogar 204
2018-01-01 00:00:00.0000000 Ungerade 11
2018-01-02 00:00:00.0000000 Ungerade 23
2018-01-03 00:00:00.0000000 Ungerade 35
2018-01-04 00:00:00.0000000 Ungerade 59
2018-01-05 00:00:00.0000000 Ungerade 83
2018-01-06 00:00:00.0000000 Ungerade 107
2018-01-07 00:00:00.0000000 Ungerade 131
2018-01-08 00:00:00.0000000 Ungerade 155
2018-01-09 00:00:00.0000000 Ungerade 179
2018-01-10 00:00:00.0000000 Ungerade 203