Cube Configuration

Dimension Library and Inheritance

The Dimension Library is the central repository for all dimension definitions in a OneStream application. Every dimension — Entity, Scenario, Account, Flow, and UD1 through UD8 — is created, organized, and maintained here before being assigned to cubes. This guide covers the Dimension Library structure, inheritance, stub dimensions, and the dimension creation workflow. For member naming rules, restricted characters, reserved words, and assigning dimensions to cubes, see Dimension Naming and Assignment. For the member-level property settings on each dimension type, see Account Member Properties, Flow Member Properties, or UD Member Properties.

The Dimension Library

The Dimension Library is located at Application > Cube > Dimensions. It is organized by dimension type, with each type having its own section:
diagramDimension Library Structure

Loading diagram...

Each dimension type contains:
  • A root dimension (RootEntityDim, RootAccountDim, RootFlowDim, RootScenarioDim, RootUD1Dim through RootUD8Dim) with a single built-in member called None
  • User-created dimensions that inherit from the root or from another user-created dimension
The None member is used when no selection for the dimension is needed or applicable. It serves as the default placeholder in POV strings when the dimension is not relevant to the current analysis or data load.

Dimension Inheritance

When you create a new dimension, you select a parent dimension to inherit from. The inheritance source determines the starting content of the new dimension.
Inheriting from RootXXXDim:
  • The new dimension starts with only the None member
  • You build the member hierarchy from scratch
  • This is the standard approach when creating a new, independent dimension
Inheriting from a user-created dimension:
  • The new dimension starts with all of the parent dimension's members as shared members
  • Changes to inherited members in the parent dimension are reflected in the child dimension
  • You can add new members that are unique to the child dimension
ℹ️Info
Dimension inheritance is useful for creating dimension levels — for example, a SummaryAccounts dimension and a DetailAccounts dimension that share a common base. The summary dimension might contain only top-level rollup members, while the detail dimension inherits those members and adds driver accounts and line-item detail. Both stay synchronized for the shared members.
The inheritance hierarchy also means that member names must be unique within a dimension type — not just within a single dimension. You cannot have an account named GrossIncome in SummaryAccounts and a different account named GrossIncome in DetailAccounts, because both belong to the Account dimension type.

Stub Dimensions (RootXXXDim)

For dimension types not used by a particular Scenario Type, you assign the root dimension (e.g., RootUD5Dim). This is a single-member dimension that acts as a stub — a placeholder that keeps the dimension slot active in the cube structure without adding overhead.

RootXXXDim vs (UseDefault)

AspectRootXXXDim (Explicit)(UseDefault)
BehaviorThe Scenario Type explicitly points to the root dimension. The dimension has one member (None).The Scenario Type inherits whatever dimension is set at the (Default) level.
What happens when (Default) changesNo effect — the Scenario Type is locked to RootXXXDim.The Scenario Type's dimension changes too — cascading and potentially unintentional.
Future flexibilityYou can change from RootXXXDim to a specific dimension at any time (with a caveat — see below).You can change (Default), but the change affects all Scenario Types still using (UseDefault).
RecommendationAlways use explicit assignment.Avoid — use only during initial setup before dimensions are finalized.
💡Tip
Always assign RootXXXDim explicitly per Scenario Type for unused dimensions rather than leaving them at (UseDefault). This prevents cascading changes and makes each Scenario Type's dimension configuration self-documenting. See Scenario Types and Cube Dimensions for the full recommended configuration.

The One-Time Upgrade Limitation

🛑Danger
Changing a Scenario Type's dimension assignment from RootXXXDim to a specific dimension is a one-time, irreversible operation once data has been loaded. You cannot revert from a specific dimension back to RootXXXDim after data exists for that Scenario Type. The engine creates data table structures when the dimension is first assigned, and those structures cannot be removed without recreating the cube.
Plan your dimension assignments carefully. Test the Root-to-specific upgrade in a development environment before applying it in production. If you are unsure whether a Scenario Type will need a dimension, assign RootXXXDim — you can always upgrade later, but you cannot downgrade.
diagramStub Dimension Upgrade Flow

Loading diagram...

Creating a New Dimension

To create a new dimension:
  1. Navigate to Application > Cube > Dimensions
  2. Expand the dimension type section (e.g., Account Dimensions)
  3. Right-click and select Add Dimension
  4. Enter a name following the member naming rules
  5. Select the parent dimension to inherit from (RootXXXDim for a fresh dimension, or an existing dimension for inheritance)
  6. Add members to the dimension — build out the hierarchy with parent and child members
  7. Configure member properties on each member (see Account Member Properties, Flow Member Properties, or UD Member Properties for property details by dimension type)
  8. Assign the dimension to the appropriate Scenario Types on the cube's Cube Dimensions tab (see Scenario Types and Cube Dimensions)