Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Switch services using the Version drop-down list. Learn more about navigation.
Applies to: ✅ Azure Data Explorer
Returns an estimate for the specified percentile of the ValueColumn population in a rolling (sliding) BinsPerWindow size window per BinSize.
The plugin is invoked with the evaluate operator.
Syntax
T | evaluate rolling_percentile(ValueColumn, Percentile, IndexColumn, BinSize, BinsPerWindow [, dim1, dim2, ...] )
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| T | string |
✔️ | The input tabular expression. |
| ValueColumn | string |
✔️ | The name of the column used to calculate the percentiles. |
| Percentile | int, long, or real | ✔️ | Scalar with the percentile to calculate. |
| IndexColumn | string |
✔️ | The name of the column over which to run the rolling window. |
| BinSize | int, long, real, datetime, or timespan | ✔️ | Scalar with size of the bins to apply over the IndexColumn. |
| BinsPerWindow | int |
✔️ | The number of bins included in each window. |
| dim1, dim2, ... | string |
A list of the dimensions columns to slice by. |
Returns
Returns a table with a row per each bin (and combination of dimensions if specified) that has the rolling percentile of values in the window ending at the bin (inclusive). Output table schema is:
| IndexColumn | dim1 | ... | dim_n | rolling_BinsPerWindow_percentile_ValueColumn_Pct |
|---|
Examples
Rolling 3-day median value per day
The next query calculates a 3-day median value in daily granularity. Each row in the output represents the median value for the last 3 bins (days), including the bin itself.
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)
Output
| 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 |
Rolling 3-day median value per day by dimension
Same example from above, but now also calculates the rolling window partitioned for each value of the dimension.
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)
Output
| 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 |