atoti.hierarchy module#

class atoti.Hierarchy#

Hierarchy of a atoti.Cube.

A hierarchy is a sub category of a dimension and represents a precise type of data.

For example, Quarter or Week could be hierarchies in the Time dimension.

property dimension: str#

Name of the dimension of the hierarchy.

A dimension is a logical group of attributes (e.g. Geography). It can be thought of as a folder containing hierarchies.

Return type

str

isin(*member_paths)#

Return a condition to check that the hierarchy is on one of the given members.

Considering hierarchy_1 containing level_1 and level_2, hierarchy_1.isin((a,), (b, x)) is equivalent to (level_1 == a) | ((level_1 == b) & (level_2 == x)).

Parameters

members – One or more members expressed as tuples on which the hierarchy should be. Each element in a tuple corresponds to a level of the hierarchy, from the shallowest to the deepest.

Example

>>> df = pd.DataFrame(
...     columns=["Country", "City", "Price"],
...     data=[
...         ("Germany", "Berlin", 150.0),
...         ("Germany", "Hamburg", 120.0),
...         ("United Kingdom", "London", 240.0),
...         ("United States", "New York", 270.0),
...         ("France", "Paris", 200.0),
...     ],
... )
>>> table = session.read_pandas(
...     df, keys=["Country", "City"], table_name="isin example"
... )
>>> cube = session.create_cube(table)
>>> h, l, m = cube.hierarchies, cube.levels, cube.measures
>>> h["Geography"] = [l["Country"], l["City"]]
>>> m["Price.SUM in Germany and Paris"] = tt.filter(
...     m["Price.SUM"],
...     h["Geography"].isin(("Germany",), ("France", "Paris")),
... )
>>> cube.query(
...     m["Price.SUM"],
...     m["Price.SUM in Germany and Paris"],
...     levels=[l["Geography", "City"]],
... )
                        Price.SUM Price.SUM in Germany and Paris
Country        City
France         Paris       200.00                         200.00
Germany        Berlin      150.00                         150.00
               Hamburg     120.00                         120.00
United Kingdom London      240.00
United States  New York    270.00
property levels: Mapping[str, atoti.level.Level]#

Levels of the hierarchy.

Return type

Mapping[str, Level]

property name: str#

Name of the hierarchy.

Return type

str

property slicing: bool#

Whether the hierarchy is slicing or not.

  • A regular (or non-slicing) hierarchy is considered aggregatable, meaning that it makes sense to aggregate data across all members of the hierarchy.

    For instance, for a Geography hierarchy, it is useful to see the worldwide aggregated Turnover across all countries.

  • A slicing hierarchy is not aggregatable at the top level, meaning that it does not make sense to aggregate data across all members of the hierarchy.

    For instance, for an As of date hierarchy giving the current bank account Balance for a given date, it does provide any meaningful information to aggregate the Balance across all the dates.

Return type

bool

property virtual: bool#

Whether the hierarchy is virtual or not.

A virtual hierarchy is a lightweight hierarchy which does not store in memory the list of its members. It is useful for hierarchies with large cardinality.

Return type

bool

property visible: bool#

Whether the hierarchy is visible or not.

Return type

bool