Поделиться через


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

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

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

Синтаксис

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

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

Параметры

Имя (название) Type Обязательно Описание
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