Cube Configuration

Dimension Naming and Assignment

This guide covers the rules and best practices for naming dimension members, assigning dimensions to cubes, and using dimension levels for extensibility. For the Dimension Library structure, inheritance, stub dimensions, and creating new dimensions, see Dimension Library and Inheritance. For the member-level property settings on each dimension type, see Account Member Properties, Flow Member Properties, or UD Member Properties.

Member Naming Rules

Dimension member names follow strict rules. Violations can cause silent failures or runtime POV errors.

Name Requirements

  • Names must be unique within a dimension type — not just within a single dimension. There can be only one account named GrossIncome across all account dimensions.
  • Names have a 500-character limit.
  • Underscores are recommended in place of spaces and periods. Square brackets are not needed for names with underscores.
  • Spaces are allowed but not recommended.
  • If a member name includes a space or period, square brackets must be used when the member is queried in a POV string.
plaintext
1E#[Quebec.City]      — Square brackets required (name contains a period)
2A#Revenue_Total      — No brackets needed (underscore)
3U1#[Sales Dept]      — Square brackets required (name contains a space)

Restricted Characters

The following characters should not be used in dimension member names:
CharacterName
#Hash / pound
:Colon
,Comma
=Equals
( )Parentheses
{ }Curly braces
"Double quote
'Single quote / apostrophe
@At sign
&Ampersand
These characters are used as delimiters in POV strings, member filter expressions, and Business Rule syntax. Including them in member names will cause parsing errors.

Reserved Words

The following words are reserved and cannot be used as dimension member names or as names for other structural application components such as cubes:
Reserved Words
AccountAll
ConsConsolidation
DefaultDimType
EntityEntityDefault
FlowOriginIC
NoneParent
POVRoot
RootAccountDimRootEntityDim
RootFlowDimRootScenarioDim
RootUD1Dim – RootUD8DimScenario
⚠️Warning
Using reserved words as member names can cause silent failures or runtime POV errors. The application may not warn you at creation time — the error surfaces later when the member is referenced in a Cube View, Business Rule, or data load. Always check this list before naming new members.

Assigning Dimensions to Cubes

Dimensions are assigned to cubes on the Cube Dimensions tab of the cube profile. This is the configuration point for horizontal extensibility — the ability to use different dimensions per Scenario Type within a single cube. For the full details of Scenario Type configuration, see Scenario Types and Cube Dimensions.

Key Rules

  1. Entity and Scenario dimensions are assigned only at the (Default) level. They are shared across all Scenario Types and cannot vary.
  2. Account, Flow, and UD1–UD8 dimensions can vary by Scenario Type. Each Scenario Type can point to a different dimension instance.
  3. When a new cube is created, all dimension types default to RootXXXDim at the (Default) level. At the Scenario Type level, all non-Entity/Scenario dimensions default to (UseDefault).
LevelEntityScenarioAccountFlowUD1–UD8
(Default)LegalEntityScenariosRootAccountDimRootFlowDimRootUD1–8Dim
Actual(grayed out)(grayed out)SummaryAccountsFlowsSpecific or RootXXXDim
Budget(grayed out)(grayed out)DetailAccountsFlowsSpecific or RootXXXDim
Forecast(grayed out)(grayed out)DetailAccountsFlowsSpecific or RootXXXDim
  • Assign Entity and Scenario at the (Default) level — these are shared across all Scenario Types
  • Leave all other dimensions at RootXXXDim at the (Default) level
  • Assign specific dimensions at each active Scenario Type — even if the same dimension is used across multiple types, explicit assignment prevents cascading changes
  • Assign RootXXXDim for unused UD types at the Scenario Type level (e.g., RootUD4Dim if UD4 is not needed)

Dimension Levels on the Cube

Different "levels" of a dimension — such as SummaryAccounts and DetailAccounts — can be assigned to different Scenario Types or different cubes. This is the foundation of extensible dimensionality.
Within a single cube (horizontal extensibility):
  • The Actual Scenario Type might use SummaryAccounts (fewer members, faster processing)
  • The Budget Scenario Type might use DetailAccounts (more members, including driver accounts for planning)
  • Both dimensions share common parent members through inheritance, ensuring consolidated results align
Across linked cubes (vertical extensibility):
  • The Corporate parent cube might use SummaryAccounts
  • Each business unit cube might use DetailAccounts with its own set of detail members
  • During consolidation, child cube detail rolls up to the parent cube's summary level
For the full treatment of extensibility patterns, see Extensibility and Linked Cubes.

Best Practices for Initial Setup

  1. Plan dimension types before creating cubes. Map out which dimension types each Scenario Type will need and what level of detail is required. Changes to cube dimensions after data has been loaded are costly.
  2. Assign RootXXXDim explicitly for unused dimension types per Scenario Type. Never leave dimensions at (UseDefault) in a production application.
  3. Use underscores from the start. Adopting underscore-based naming (Revenue_Total instead of Revenue Total) avoids the need for square brackets in POV strings and prevents parsing issues.
  4. Keep names short. Member names appear in POV strings, Cube Views, Transformation Rules, and Business Rules. Long names make these harder to read and maintain.
  5. Document naming conventions. Establish a naming standard (e.g., prefix patterns, abbreviation rules) and communicate it to the team before members are created.
  6. Test Root-to-specific upgrades in dev. Before activating a new dimension on a Scenario Type in production, test the upgrade in a development environment. Verify that existing data is not affected and that calculations produce expected results.
  7. Validate constraints before loading data. Configure VaryByCubeType constraints on Account, Flow, and UD members (see Account Member Properties and UD Member Properties) before the first data load. Adding constraints after data exists can orphan records at invalid intersections.