atoti.scope package¶
Submodules¶
atoti.scope.scope module¶
Scope class.
Module contents¶
Scope functions.
-
atoti.scope.
cumulative
(level, *, dense=False, partitioning=None, window=None)¶ Create a scope to be used in the computation of cumulative aggregations.
Cumulative aggregations include cumulative sums (also called running sum or prefix sum), mean, min, max, etc.
Example:
m2 = atoti.agg.sum(m1, scope=atoti.scope.cumulative(date))
date
m1
m2
2000/01/01
15
15
2000/01/02
10
25
2000/02/03
20
45
2000/02/05
30
75
2000/04/05
5
90
2000/04/05
10
95
If the level is part of a multi-level hierarchy, it is possible to reset the aggregation when the value of a level changes. For instance, a running sum over a date can be reset at the beginning of each month:
m2 = atoti.agg.sum(m1, scope=atoti.scope.cumulative("day", partitioning="month"))
year/month/day
m1
m2
Comment
2000/01/01
15
15
2000/01/02
10
25
2000/02/03
20
20
Reset at the beginning of February
2000/02/05
30
50
2000/04/05
5
5
Reset at the beginning of April
2000/04/05
10
15
- Parameters
level (
Level
) – The level along which the aggregation is performed.dense (
bool
) – When set toTrue
, all members of the level, even those with no value for themeasure, will be taken into account for the cumulative aggregation (resulting (underlying) –
repeating values) (in) –
partitioning (
Optional
[Level
]) – The levels in the hierarchy at which to start the aggregation over.window (
Union
[range
,Tuple
[Optional
[str
],Optional
[str
]],None
]) –The custom aggregation window. The window defines the set of members before and after a given member (using the level comparator) to be considered in the computation of the cumulative aggregation.
The window can be a:
range
starting with a <=0 value and ending with a >=0 value.By default the window is
range(-∞, 0)
, meaning that the value for a given member is computed using all of the members before it and none after it.time period as a two-element tuple starting with an offset of the form
-xxDxxWxxMxxQxxY
orNone
and ending with an offset of the formxxDxxWxxMxxQxxY
orNone
.For instance, to compute the 5 previous days sliding mean:
m2 = atoti.agg.mean(m1, scope=tt.scope.cumulative("date", window=("-5D", None)))
- Return type
-
atoti.scope.
origin
(*levels)¶ Create an aggregation scope with an arbitrary number of levels.
The passed levels define a boundary above and under which the aggregation is performed differently. When those levels are not expressed in a query, the measure will drill down until finding the value for all members of these levels, and then aggregate those values using the user-defined aggregation function. This allows to compute measures that show the yearly mean when looking at the grand total, but the sum of each month’s value when looking at each year individually.
-
atoti.scope.
siblings
(hierarchy, *, exclude_self=False)¶ Create a “siblings” aggregation scope.
In a siblings scope, the value for the member of a given level in the hierarchy is computed by taking the contribution of all of the members on the same level (its siblings).
A siblings aggregation is an appropriate tool for operations such as marginal aggregations (marginal VaR, marginal mean) for non-linear aggregation functions.