Adding cube hierarchies

This page provides a description of how we can expose a datastore field as a cube level. It features an example in which we expose a calculated column ‘calculated’ from a new store as a level. For a full walk-through on how this store was added to the cube, see Adding New Data Loading or Unloading Topics.

tip

MR 3.1.0 introduced adding customizations through Spring Beans using new extension points. The example below assumes a new field has been added to the store, fed through the addition of a new column calculator. For documentation on the new mechanism, including how to implement such a column calculator, see Configuring sources.

The techniques employed are generic examples that can be extended, adapted and repeated for any use case that we need.

Step 1 - (Optional) Modify the schema selection description

If the default Atoti Market Risk behavior is not appropriate for the fields added in the datastore, schema selection customization might be required.

For details about the available customization mechanism, please refer to Configuring schema selections using Spring Beans.

Step 2 - Create the level

The field in the schema selection can now be turned into a level in the cube.

Dimensions, hierarchies, and levels can be added to the cube configuration by creating Spring Beans with type HierarchyBuilderConsumer and one of the following qualifiers:

Cube Qualifier
Var-ES Cube varDimensions
Sensitivity Cube sensiDimensions, sensiCommonDimensions
PLCube aPnlDimension
Var-ES Summary Cube varSummaryDimensions
Sensitivity Summary Cube sensiSummaryDimensions
PL Summary Cube aPnlSummaryDimension
Market Data Cube mdDimensions

For example:

    @Qualifier("varDimensions")
    @Order(50)
    @Bean
    public HierarchyBuilderConsumer myHierarchy() {
        return hierarchyBuilder -> hierarchyBuilder.toDimension("Sign", builder -> builder
            .withHierarchy("Sign")
            .withLevel("calculated");
    }

Note: The order has been set to 50 so that this dimension is added after the existing dimensions (order=20) and before the epoch dimension (order=99).

When using DirectQuery

When using DirectQuery, perform the steps as listed above. There are no additional requirements.

warning

The DirectQuery and in-memory Atoti servers must be configured identically. There must not be any hierarchies in the DirectQuery data node that do not exist in the in-memory one.

Suggested Further Reading