atoti.Hierarchy.virtual#
- property Hierarchy.virtual: bool | None#
Whether the hierarchy is virtual or not.
A virtual hierarchy does not store in memory the list of its members. Hierarchies with large cardinality are good candidates for being virtual.
By default, a given hierarchy is automatically set as virtual if and only if it comes from an
ExternalTable
and one of the following conditions is met:The hierarchy has a cardinality of 10000 or more;
The
activeviam.experimental.forceVirtualHierarchies
property is set totrue
.
Note
As its name suggests,
activeviam.experimental.forceVirtualHierarchies
is an experimental/temporary property which may change in future bugfix releases.Example
>>> from atoti_directquery_clickhouse import ConnectionConfig, TableConfig >>> connection_config = ConnectionConfig( ... url=f"clickhouse:http://localhost:{clickhouse_server_port}/{schema_name}", ... ) >>> table_config = TableConfig(keys={"id"})
Without
activeviam.experimental.forceVirtualHierarchies
:>>> session = tt.Session.start() >>> external_database = session.connect_to_external_database( ... connection_config ... ) >>> sales_table = session.add_external_table( ... external_database.tables["sales"], config=table_config ... ) >>> cube = session.create_cube(sales_table) >>> cube.hierarchies["product"].virtual False
With
activeviam.experimental.forceVirtualHierarchies
:>>> session_config = tt.SessionConfig( ... java_options=["-Dactiveviam.experimental.forceVirtualHierarchies=true"] ... ) >>> session = tt.Session.start(session_config) >>> external_database = session.connect_to_external_database( ... connection_config ... ) >>> sales_table = session.add_external_table( ... external_database.tables["sales"], config=table_config ... ) >>> cube = session.create_cube(sales_table) >>> cube.hierarchies["product"].virtual True