← Back to Pattern Catalog
Foundation Pattern

Bitemporal Modeling

Bitemporal Modeling separates when something was valid in the business from when it was known by the system.

Problem

Corrected history can silently rewrite the past.

Traditional historized models usually track when a record was valid in the business. But historical reporting often also needs to know when that record became visible to the reporting system.

Without this second timeline, corrected or late-arriving history can change past reports even though those reports could not have known the corrected information at the time.

Future knowledge leakageLate-arriving historyNon-reproducible reportsAudit ambiguity
Example

A January business fact may only become known in March.

Business-valid time
Valid from January 1
The customer segment is true for the business from the start of January.
System-visible time
Visible from March 10
The correction only arrives in the reporting system in March.
Reporting impact
January rebuilt today knows more
A rebuilt January report may include knowledge that the original January report did not have.
valid_from / valid_to → when the record is true in the business visible_from / visible_to → when the record is known by the system

Bitemporal Modeling keeps both perspectives available instead of forcing one historical interpretation into the data model.

Why it happens

A business fact has two different time meanings.

Valid time describes when the record is true in the business. Visible time describes when the system knew about that record. These two timelines often diverge when sources correct, reload or restate historical data.

Backdated correctionsSource reloadsDelayed ingestionRetrospective fixesCorrected dimensionsSnapshot rebuilding
Common modeling approaches

Store both the business timeline and the knowledge timeline.

Valid-time interval
Use valid_from and valid_to to represent when a record is true in the business.
Visible-time interval
Use visible_from and visible_to to represent when the system knew that version.
Bitemporal as-of queries
Query with both a reporting date and a knowledge date.
Preserve old knowledge
Keep previous visible states instead of overwriting them with corrected history.
Validation checks

Validate that both timelines behave correctly.

Validate visible-time continuityDetect retroactive correctionsCompare current truth with as-known resultsValidate snapshot reproducibilityCheck whether future knowledge leaks into past reports
Why it matters

Bitemporal Modeling explains what was true and what was known.

Bitemporal Modeling is the foundation for historical reporting that must distinguish corrected truth from as-known truth.

It is especially important when source systems can correct past records, deliver history late or restate historical facts.

Related Patterns
Historical CorrectionSnapshot ReproducibilityHistorical ConformanceDimension CompletionHistorical Backfill
Try it

Explore bitemporal behavior in the Workbench.

Use the Historical Modeling Workbench to reason about valid-time, visible-time, corrections and reproducible historical outputs.

Open Historical Modeling Workbench →