Skip to main content
Skip table of contents

Best practices for dimensions

Designing a dimension means choosing the right levels and the right granularity for your analysis.

Use this page when you design or refactor a dimension. The Requirements section lists what Valsight enforces; Design principles covers what makes the dimension easier to maintain.


Requirements

Dimensions must be MECE

Each level of a hierarchy must be mutually exclusive and collectively exhaustive (MECE):

  • Mutually exclusive: every data point belongs to exactly one entry on a given level; no value can appear under two parents at the same time.

  • Collectively exhaustive: every data point belongs to some entry on the level; no value can be left without a parent.

If a value cannot be cleanly placed under one of your existing parents, you have either defined the level wrong or you need a "catch-all" parent to absorb the remainder.

Example: a regional hierarchy

The Location dimension has three levels: Total, Region, Country. The Region level groups countries into EMEA, America, and Rest of World, with GER and FRA under EMEA, USA under America, and JPN, IND, AUS under Rest of World.

This hierarchy is MECE:

  • Mutually exclusive: each country has exactly one Region parent. If GER were listed under both EMEA and Rest of World, that would be a mutual exclusivity violation.

  • Collectively exhaustive: every country has a home. If JPN, IND, and AUS were left out of the hierarchy, their data would appear missing. The Rest of World bucket is the catch-all that keeps every country represented at the Region level.

Level names must be unique across the project

Two dimensions in the same project cannot share a level name. Valsight enforces this in the software and on Excel upload; an uploaded column that reuses a level name from another dimension produces a validation error (see Excel upload feedback messages).


Design principles

These are recommendations, not enforced rules. Following them makes a dimension easier to maintain and reason about.

  • Don't model finer than you need. Excessive granularity inflates cube sizes, slows calculations, and adds maintenance burden for no analytical gain. Decide the level of detail your analysis actually requires before designing the dimension.

  • Pick the lowest level first. Once you have settled on the right level of detail, design the dimension from that level upward. Reverse-designing from the top usually leaves gaps.

  • Name levels by what they contain, not how they roll up. "Country" is better than "Region detail".

  • Avoid placeholder values like "Other" or "Unknown" on a granular level. They usually signal that the upper levels are not collectively exhaustive (a MECE violation). Add a real catch-all parent instead.


Limitations to keep in mind

  • Each dimension must be updated separately. You cannot update multiple dimensions in a single Excel upload.

  • When updating via Excel, the full structure must be supplied. Partial uploads are not supported.

  • Levels used as level links to other dimensions cannot be removed via Excel. Remove the link first.


Related sections

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.