atoti.agg.quantile module#

atoti.agg.quantile(operand: ColumnOrOperationOrLevel, /, q: Union[float, MeasureDescription], *, mode: Literal['simple', 'centered', 'inc', 'exc'] = "'inc'", interpolation: Literal['linear', 'higher', 'lower', 'nearest', 'midpoint'] = "'linear'") #
atoti.agg.quantile(operand: MeasureDescription, /, q: Union[float, MeasureDescription], *, mode: Literal['simple', 'centered', 'inc', 'exc'] = "'inc'", interpolation: Literal['linear', 'higher', 'lower', 'nearest', 'midpoint'] = "'linear'", scope: Scope)

Return a measure equal to the requested quantile of the passed operand across the specified scope.

Here is how to obtain the same behavior as these standard quantile calculation methods:

• R-1: `mode="centered"` and `interpolation="lower"`

• R-2: `mode="centered"` and `interpolation="midpoint"`

• R-3: `mode="simple"` and `interpolation="nearest"`

• R-4: `mode="simple"` and `interpolation="linear"`

• R-5: `mode="centered"` and `interpolation="linear"`

• R-6 (similar to Excel’s `PERCENTILE.EXC`): `mode="exc"` and `interpolation="linear"`

• R-7 (similar to Excel’s `PERCENTILE.INC`): `mode="inc"` and `interpolation="linear"`

• R-8 and R-9 are not supported

The formulae given for the calculation of the quantile index assume a 1-based indexing system.

Parameters
• operand (`Union`[`Column`, `Operation`, `Level`, `MeasureDescription`]) – The operand to get the quantile of.

• q (`Union`[`float`, `MeasureDescription`]) – The quantile to take. Must be between `0` and `1`. For instance, `0.95` is the 95th percentile and `0.5` is the median.

• mode (`Literal`[‘simple’, ‘centered’, ‘inc’, ‘exc’]) –

The method used to calculate the index of the quantile. Available options are, when searching for the q quantile of a vector `X`:

• `simple`: `len(X) * q`

• `centered`: `len(X) * q + 0.5`

• `exc`: `(len(X) + 1) * q`

• `inc`: `(len(X) - 1) * q + 1`

• interpolation (`Literal`[‘linear’, ‘higher’, ‘lower’, ‘nearest’, ‘midpoint’]) –

If the quantile index is not an integer, the interpolation decides what value is returned. The different options are, considering a quantile index `k` with `i < k < j` for a sorted vector `X`:

• `linear`: `v = X[i] + (X[j] - X[i]) * (k - i)`

• `lower`: `v = X[i]`

• `higher`: `v = X[j]`

• `nearest`: `v = X[i]` or `v = X[j]` depending on which of `i` or `j` is closest to `k`

• `midpoint`: `v = (X[i] + X[j]) / 2`

• scope (`Union`[`CumulativeScope`, `OriginScope`, `SiblingsScope`, `None`]) – The scope of the aggregation.

Return type

`MeasureDescription`