← Back to Pattern Catalog
Interactive Pattern

Dimension Completion

A contract exists from January to December, but the customer assignment only starts in April. What should the February snapshot report show?

Problem

A fact exists, but no valid dimension record exists.

This often happens in snapshot reporting, late-arriving dimensions or cross-system integrations. The fact row is available for a reporting period, but the dimension history does not cover that same period.

A dimension can be technically valid and still be incomplete for reporting. SCD2 stores the changes that were captured, but it does not automatically create the missing historical coverage needed by snapshot facts.

Missing attributesMissing joinsIncorrect historical reportingUnstable snapshots
Example

Contract exists from January to December. Customer assignment starts in April.

Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
February snapshot
Contract fact
JanDec
Customer dimension
AprDec
?
Snapshot Date: February 2024
The contract exists. The customer assignment does not exist yet.
What should reporting show?

Expected Result (Recommended)

Contract
C-1001
Customer
Customer A
Reason
Earliest known customer assignment completed backwards
×

Common Wrong Result (Risk)

Contract
C-1001
Customer
NULL / Unknown
Reason
No valid customer row exists in February
Reporting date: February

The contract exists in February, but the customer dimension has no valid row yet. Without completion, the snapshot either loses the dimension attributes or fails the historical join.

Test case

Try this Dimension Completion case in Target Table Validation

Use these sample target tables to test the validator:

  1. Copy one of the target tables below.
  2. Open Target Table Validation.
  3. Paste the copied table as your target output.
  4. Check whether missing dimension history was completed or left unresolved.
Completed target table

Copy this table to validate the expected completed dimension output.

contract_id,customer_key,snapshot_date,valid_from,valid_to,completion_method
C-1001,Customer A,2024-01-31,2024-01-01,2024-01-31,earliest_known_value_backfill
C-1001,Customer A,2024-02-29,2024-02-01,2024-02-29,earliest_known_value_backfill
C-1001,Customer A,2024-03-31,2024-03-01,2024-03-31,earliest_known_value_backfill
C-1001,Customer A,2024-04-30,2024-04-01,2024-04-30,observed
C-1001,Customer A,2024-05-31,2024-05-01,2024-05-31,observed
C-1001,Customer A,2024-06-30,2024-06-01,2024-06-30,observed
Wrong target table

Copy this table to validate a risky output where missing dimension matches remain unresolved.

contract_id,customer_key,snapshot_date,valid_from,valid_to,completion_method
C-1001,,2024-01-31,2024-01-01,2024-01-31,missing_dimension_match
C-1001,,2024-02-29,2024-02-01,2024-02-29,missing_dimension_match
C-1001,,2024-03-31,2024-03-01,2024-03-31,missing_dimension_match
C-1001,Customer A,2024-04-30,2024-04-01,2024-04-30,observed
C-1001,Customer A,2024-05-31,2024-05-01,2024-05-31,observed
C-1001,Customer A,2024-06-30,2024-06-01,2024-06-30,observed
Open Target Table Validation →
Reporting question

What should the February snapshot show?

Snapshot Date
2024-02-29
Contract
C-1001
Contract valid
Jan → Dec
Customer assignment
Apr → Dec

The contract is clearly valid in February. The customer assignment is not. This is the exact moment where Dimension Completion becomes a modeling decision instead of a simple join problem.

Key idea

SCD2 preserves history. Dimension Completion creates missing reporting coverage.

Many teams assume that historized dimensions are enough for historical reporting. But a perfectly modeled SCD2 dimension can still fail if its valid-time intervals do not cover the periods required by the fact table.

Dimension Completion extends, reconstructs or explicitly marks missing dimension history so every relevant fact period has a deterministic dimensional context.

Why it happens

The fact model and dimension model do not have the same historical coverage.

Late arriving dimensionsPartial source historyCross-system integrationHistorical backfillsSnapshot reporting requirements
Where it appears

Dimension Completion often appears when fact history is older than dimension history.

Insurance
A policy exists since 2018, but customer ownership history only starts in 2021.
Sales reporting
Revenue history exists before territory, account or sales hierarchy history was tracked.
Product reporting
Sales facts exist before product categories or risk attributes were historized.
Lakehouse migrations
A new gold model requires historical dimensions that were never fully available in the source.
Typical solutions

Complete the dimension before joining it to the fact model.

Earliest Known Value Backfill
Extend the earliest known dimension version backwards when the business assumption is that the value already applied before it was first observed.
Carry Forward
Extend the closest known dimension version into uncovered periods when this matches the business meaning.
Unknown Member
Join missing periods to a synthetic fallback member instead of silently dropping fact rows.
Synthetic History
Reconstruct historical dimension coverage from events, snapshots or other source evidence.
Validation checks

Before publishing the model, validate historical coverage.

Every fact period has a dimension matchNo silent fact loss during historical joinsCompleted history is marked or explainableBackfilled values are business-approvedSnapshot completeness validationLate arriving dimension validation
Why it matters

Without Dimension Completion, snapshot facts can be correct but historically unusable.

The fact table may contain one row per entity and snapshot date, but downstream reporting still fails when the dimension join cannot resolve a valid historical context.

Dimension Completion makes the assumption explicit: either history is backfilled, reconstructed, carried forward or assigned to an unknown member. The important part is that missing coverage is handled deliberately rather than silently losing facts or attributes.

Related Concepts

Dimension Completion is closely related to several historical modeling concepts.

Snapshot Reproducibility
Historical snapshots remain reproducible only if dimensions provide consistent coverage for every reporting period.
Historical Coverage Gap
Dimension Completion is often required when historical coverage gaps exist between facts and dimensions.
State ↔ State Alignment
Historical joins become unstable when aligned states do not cover the same time periods.
SCD2 Dimensions
SCD2 preserves captured history, but does not automatically create the historical coverage required by snapshot reporting.
Related Patterns
Snapshot ReproducibilityState ↔ Event AlignmentRelationship HistoryHistorical Coverage GapState ↔ State Alignment
Try it

Review your own historical model for Dimension Completion risks.

Paste your historized fact and dimension data into the workbench and check whether your snapshot model has missing dimensional coverage.

Review My Model →