Подключаемый модуль rolling_percentile()

Возвращает оценку для указанного процентиля заполнения ValueColumn в скользящем (скользящем) окне размера BinsPerWindow для каждого размера BinSize.

Подключаемый модуль вызывается с evaluate помощью оператора .

Синтаксис

T| evaluaterolling_percentile(ValueColumn,Процентиль,IndexColumn,BinSize,BinsPerWindow [,dim1,dim2, ...] )

Дополнительные сведения о соглашениях о синтаксисе.

Параметры

Имя Тип Обязательно Описание
T string ✔️ Входное табличное выражение.
ValueColumn string ✔️ Имя столбца, используемого для вычисления процентилей.
Процентиль int, long или real ✔️ Скаляр с процентилем для вычисления.
IndexColumn string ✔️ Имя столбца, по которому выполняется скользящее окно.
BinSize int, long, real, datetime или timepan ✔️ Скалярный с размером ячеек, применяемых к IndexColumn.
BinsPerWindow int ✔️ Количество ячеек, включенных в каждое окно.
dim1, dim2, ... string Список столбцов измерений для среза.

Возвращаемое значение

Возвращает таблицу со строкой на каждую ячейку (и сочетанием измерений, если указано), которая имеет скользящий процентиль значений в окне, заканчивающееся на ячейку (включительно). Схема выходной таблицы:

IndexColumn dim1 ... dim_n rolling_BinsPerWindow_percentile_ValueColumn_Pct

Примеры

Скользящее 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)

Выходные данные

Отметка времени 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

Скользящее 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)

Выходные данные

Отметка времени EvenOrOdd 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
2018-01-01 00:00:00.0000000 Странно 11
2018-01-02 00:00:00.0000000 Странно 23
2018-01-03 00:00:00.0000000 Странно 35
2018-01-04 00:00:00.0000000 Странно 59
2018-01-05 00:00:00.0000000 Странно 83
2018-01-06 00:00:00.0000000 Странно 107
2018-01-07 00:00:00.0000000 Странно 131
2018-01-08 00:00:00.0000000 Странно 155
2018-01-09 00:00:00.0000000 Странно 179
2018-01-10 00:00:00.0000000 Странно 203