Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Start a dimensional warehouse by defining what one fact-table row represents. Then choose dimensions that make those facts understandable and decide, attribute by attribute, whether changes should overwrite old values or preserve history. A star schema is usually the clearest starting point; snowflaking and slowly changing dimension (SCD) strategies address specific modeling needs rather than serving as automatic upgrades.

What is a star schema?

A star schema organizes analytical data around one or more fact tables. A fact table stores measurements—such as an order quantity or sales amount—at a declared grain. Dimension tables describe the entities and attributes people use to filter, group, sort, and summarize those measurements, such as customer, product, or date.

The grain is the precise meaning of one row in a fact table. For example, a sales fact might represent one product line on one order. State that meaning before selecting keys or adding measures: each fact row, its dimension keys, and its measurements must agree on the same grain. Mixing different levels of detail in one fact table can make aggregation misleading.

A warehouse can contain several fact tables, each with its own grain and related dimensions. Microsoft describes star schemas as appropriate for analytical query workloads. Its Dimensional Modeling overview notes that fewer joins and a greater likelihood of useful indexes can support high-performance relational queries; this is guidance, not a quantified benchmark.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When should you use a snowflake dimension?

A snowflake dimension splits a business hierarchy into multiple normalized, related tables. Instead of storing product, subcategory, and category attributes together in one product dimension, for example, the model can store those levels separately and link them.

Normalization can reduce duplicated hierarchy attributes, but it adds joins and can make the model less straightforward for report authors. Microsoft generally recommends denormalized dimensions for usability and query performance, while identifying particular cases where snowflaking may be useful. The choice depends on the model and workload, not on a blanket rule that normalized is better.

Consideration Star or denormalized dimension Snowflaked dimension
Hierarchy attributes Stored together in a dimension table, which is typically simpler to navigate. Split across related tables to normalize the hierarchy.
Joins and report usability Fewer joins and a more direct structure for report authors. More joins; semantic-model design may need to present the hierarchy in a more usable form.
Storage of repeated hierarchy data Some attributes may be repeated across dimension rows. Can reduce duplication by storing hierarchy levels separately.
Situations to assess A sensible default for many analytic dimensions. Potentially useful for extremely large dimensions, facts at different hierarchy grains that need higher-level keys, or history tracked at a higher hierarchy level.

In Power BI semantic models, a view joining snowflake tables may be needed to provide a denormalized result for hierarchy use. For the platform-specific considerations, see Microsoft’s Modeling Dimension Tables in Warehouse and Understand star schema and the importance for Power BI.

What are slowly changing dimensions?

An SCD strategy defines how a dimension responds when a descriptive attribute changes. The appropriate behavior depends on the question analysts need to answer: should older facts appear under the current description, or should reports retain the description that applied when each fact occurred?

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose behavior for each attribute, rather than assigning one history policy blindly to an entire dimension. An attribute that needs no prior-value reporting can be overwritten, while another attribute in the same dimension can retain versions. Microsoft’s guidance describes Types 1, 2, and 3; Type 1 and Type 2 address the most common overwrite-versus-history choice.

Type 1: overwrite the existing value

Type 1 updates the existing dimension row. Older facts joined to that row will be shown with the latest attribute value, so historical reports can be restated. Use it when prior values are not needed, or to correct erroneous data that should not remain as a historical version.

Type 2: preserve versions

Type 2 inserts a new dimension row when a tracked attribute changes and retains the previous row. Facts can then point to the version that applied at their time. Each version needs its own surrogate key, along with validity information such as start and end dates or a current-row indicator.

Keep the business key—the identifier of the real-world entity—distinct from the surrogate key that identifies one warehouse version of that entity. The business key connects versions of the same entity; the surrogate key lets facts identify a particular version.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Type 3: keep limited prior values

Type 3 stores limited history in attributes rather than creating a sequence of versioned rows. It is not a full audit history, and Microsoft characterizes it as less commonly used; consider Type 2 when a fuller history is required.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

How do you load a Type 2 dimension?

The load must detect changes and preserve the old and new versions. Type 2 history is not automatic: if source systems do not retain versions, the warehouse load process has to identify and store changes.

  1. Match source records to dimension entities. Compare staged source rows with existing dimension rows using the business key.
  2. Identify new and changed records. Determine which entities are new and whether any attributes configured for Type 2 tracking have changed.
  3. Expire the old version for a tracked change. Update the existing row’s validity information or current-row indicator to show that it is no longer current.
  4. Insert a new version. Add a dimension row with a new surrogate key and the appropriate validity information; retain the business key to connect it to the same entity.
  5. Load facts against the applicable version. Use the dimension version that corresponds to the fact’s relevant time so historical analysis can use the description then in effect.

The exact SQL, late-arriving-data handling, time-zone policy, and effective-date conventions depend on the implementation. Microsoft’s Load Tables in a Dimensional Model describes dimension matching and Type 1/Type 2 load behavior.

How should you choose a modeling approach?

Decide based on the analyses the warehouse must support, not a desire to maximize normalization or history for its own sake.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • For fact tables: define a consistent grain before choosing measures, dimension keys, or aggregation logic.
  • For dimensions: begin with a denormalized star-style design when a direct, report-friendly model is the priority; assess snowflaking when dimension size, different hierarchy grains, or higher-level history calls for it.
  • For changing attributes: use Type 1 where prior values should disappear or errors need correction; use Type 2 where historical context matters; consider Type 3 only when a limited prior value is sufficient.
  • For rapidly changing measures: consider whether the value belongs in a fact table or a separate dimension instead of treating every change as an SCD event.

These are dimensional-modeling guidelines, not a claim that every warehouse or semantic model should have the same physical layout. The cited Microsoft guidance is oriented to relational dimensional models and includes Power BI- and Fabric-specific recommendations.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.