Dela via


rolling_percentile() plugin-program

Returnerar en uppskattning för den angivna percentilen av ValueColumn-populationen i ett rullande (glidande) binsPerWindow-storleksfönster per BinSize.

Plugin-programmet anropas med operatorn evaluate .

Syntax

T| evaluaterolling_percentile(ValueColumn,Percentil,IndexColumn,Diskretisera,BinsPerWindow [,dim1,dim2, ...] )

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
T string ✔️ Tabelluttrycket för indata.
ValueColumn string ✔️ Namnet på kolumnen som används för att beräkna percentilerna.
Percentil int, long eller real ✔️ Skalär med percentilen som ska beräknas.
IndexColumn string ✔️ Namnet på den kolumn som det rullande fönstret ska köras över.
Diskretisera int, long, real, datetime eller timespan ✔️ Skalär med storleken på de intervall som ska tillämpas över IndexColumn.
BinsPerWindow int ✔️ Antalet intervall som ingår i varje fönster.
dim1, dim2, ... string En lista över de dimensionskolumner som ska segmenteras efter.

Returer

Returnerar en tabell med en rad per varje lagerplats (och en kombination av dimensioner om den anges) som har den rullande percentilen av värden i fönstret som slutar på lagerplatsen (inklusive). Utdatatabellschemat är:

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Exempel

Rullande medianvärde på 3 dagar per dag

Nästa fråga beräknar ett medianvärde på 3 dagar i den dagliga kornigheten. Varje rad i utdata representerar medianvärdet för de senaste 3 intervallen (dagarna), inklusive själva lagerplatsen.

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)

Resultat

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

Rullande medianvärde på 3 dagar per dag efter dimension

Samma exempel från ovan, men beräknar nu också det rullande fönstret partitionerat för varje värde i dimensionen.

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)

Resultat

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