Share via


rolling_percentile() プラグイン

BinSize ごとのローリング (スライディング) BinsPerWindow サイズ ウィンドウで、ValueColumn 母集団の指定されたパーセンタイルの推定値を返します。

このプラグインは、evaluate 演算子を使用して呼び出します。

構文

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

構文規則について詳しく知る。

パラメーター

名前 必須 説明
T string ✔️ 表形式の入力式。
ValueColumn string ✔️ パーセンタイルの計算に使用される列の名前。
パーセンタイル int、long、または real ✔️ 計算するパーセンタイルを持つスカラー。
IndexColumn string ✔️ ローリング ウィンドウを実行する列の名前。
BinSize int、long、real、datetime、または timespan ✔️ IndexColumn に適用するビンのサイズを持つスカラー。
BinsPerWindow int ✔️ 各ウィンドウに含まれるビンの数。
dim1, dim2, ... string スライスするディメンション列の一覧。

戻り値

ビン (および指定されている場合は、ディメンションの組み合わせ) ごとに 1 行を含むテーブルを返します。このテーブルには、ビンで終わるウィンドウ内のローリング パーセンタイルが含まれます (ビンを含む)。 出力テーブル スキーマは次のとおりです。

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

1 日ごとに 3 日分の中央値をローリングする

次のクエリでは、毎日の粒度で 3 日分の中央値を計算します。 出力の各行は、ビン自体を含む最後の 3 つのビン (日) の中央値を表します。

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)

出力

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

ディメンションごとの 1 日あたりの 3 日分の中央値をローリングする

上記と同じ例ですが、ディメンションの値ごとにパーティション分割されたローリング ウィンドウも計算します。

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)

出力

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