What are the common dimensions?
The following table lists every dimension provided by the common layer.What are optional dimensions?
The common layer provides the Organization, Counterparties, and Books dimensions as reusable building blocks. Each solution decides independently whether to include them and, if so, whether to expose a configuration property that lets users enable or disable them. Some solutions include a feature as a permanent part of their cube with no toggle. The documentation for each solution lists which optional dimensions are available and how they are controlled.How to extend dimensions
Via configuration properties
Configuration properties control which dimensions are enabled and how existing dimensions behave. Examples include enabling or disabling optional dimensions via feature flags, and setting parameters such as display currencies, confidence levels, and scenario count. Adding entirely new custom dimensions requires the Java API. See Configuration properties for supported options.Via the Java API
To add entirely new dimensions, use anIModelConfigurer implementation. First add the field to the database, then create the dimension on the cube.
The following example adds a Region field to the facts table and exposes it as a new dimension. On the cube, obtain the dimensions configurator with cube(...).dimensions(), create the dimension with addDimension(name, dimensionTable), then attach a single-field hierarchy built with ITableHierarchyDefinition.builder(...).withFieldLevel(level, FieldPath.of(...)):
What are the dimension relationship types?
When adding a dimension from a table, the relationship between that table and the fact table must be specified. Three relationship types are available:
If the relationship is not specified, the configurator infers a unique many-to-one relationship automatically. The code example above uses this inferred behavior.
Many-to-many dimensions are computed at query time and cannot be used in pre-aggregators.
How to rename dimensions
Dimensions, hierarchies, and levels defined by a solution can be renamed without modifying Java code. Add name overrides toapplication.yml: