← Back to Pattern Catalog
Interactive Pattern

SCD2 vs Bitemporal Modeling

Quick answer

When should you use SCD2 and when should you use bitemporal modeling?

Use SCD2 when you only need business-valid history.

Use bitemporal modeling when you must preserve both business-valid history and the history of when information became visible to the platform.

Core idea

SCD2 answers what was valid. Bitemporal modeling also answers what was visible.

Slowly Changing Dimension Type 2 is one of the most common ways to model changing attributes over time. It creates a new row when a relevant attribute changes and uses validity intervals to resolve the correct version for a reporting date.

Bitemporal modeling goes one step further. It separates the time when something was valid in the business from the time when the data platform could see it. This becomes important when history can be corrected, backdated or arrive late.

Interactive Pattern

In March, the platform shows Standard. In May, a correction says March should have been Premium.

The business-valid date stays March. What changes is the knowledge date: do you query what is corrected today, or what was known back then?

Timeline
Mar
Apr
May
Jun
March report
Correction arrives
Business-valid reality
Valid for MarchPremium
Visible in March
Known by platformStandard
Query perspective
March report as originally known
Customer segmentStandard

In March, the platform only knew the customer segment as Standard. The correction to Premium had not arrived yet.

Key idea

SCD2 can tell you the corrected valid-time truth. Bitemporal modeling can additionally reproduce what the platform knew at the time the report was created.

Comparison

The practical difference between SCD2 and bitemporal modeling.

Main question
SCD2

What was true in the business timeline?

Bitemporal

What was true, and what was visible at the time?

Time axes
SCD2

Usually valid_from and valid_to

Bitemporal

Valid time plus visible/system/transaction time

Corrections
SCD2

Often overwrite or create a corrected valid-time version

Bitemporal

Preserve when the correction became visible

Best for
SCD2

Historical attributes and point-in-time reporting

Bitemporal

Auditability, reproducibility and corrected history

When SCD2 is enough

Use SCD2 when you only need business-valid history.

Customer segment historyProduct category historyContract status historyPoint-in-time reportingStable historical sources

SCD2 is often sufficient when past reports are allowed to use the latest corrected version of history, or when the source system does not provide meaningful information about when a correction became visible.

When bitemporal is needed

Use bitemporal modeling when corrected or late-arriving history matters.

Backdated changesLate arriving dimensionsAudit reportingSnapshot reproducibilityRegulatory reportingCorrected source history

Bitemporal modeling is useful when users need to reproduce a historical report as it was known at the time, not just as it would be calculated using today's corrected history.

Typical risk

A model can be valid as SCD2 and still fail reproducibility.

A corrected customer segment may be valid for March, but the correction might only have arrived in May. A March report rebuilt in June may therefore show a different result than the report originally published in March.

This is not necessarily an SCD2 bug. It is a missing visible time decision. Bitemporal modeling makes that decision explicit.

Validation checks

Validate both valid-time behavior and correction behavior.

One valid version per key and reporting dateNo unintended valid-time overlapsNo missing historical coverageVisible-time correction behavior is explicitHistorical reports can be reproduced as originally knownLate-arriving records are handled deliberately
Related concepts

SCD2 and bitemporal modeling connect to several historical modeling patterns.

State Modeling
SCD2 is a common implementation of state modeling with valid-time intervals.
Snapshot Reproducibility
Bitemporal models help reproduce reports as they were known at a previous point in time.
Dimension Completion
Even a correct SCD2 dimension may need completion when it does not cover all fact periods.
Historical Conformance
Multiple source systems often require explicit decisions about which timeline drives reporting.
Try it

Explore the Advisor for your own model.

Use the advisor when you are unsure whether your historical model only needs valid-time history or must also preserve what was known at reporting time.

Explore the Advisor →