Dual SCD2- The Foundation for True History in Data Warehousing
How business-valid time and system-valid time work together to capture reality and knowledge.

Snapshots are seductive. They feel simple: just store what the data looked like on each day (or load). Problem solved, right?
Not quite.
As I explained in Why snapshots alone don’t give you true history, snapshots lack the precision and flexibility we need to reconstruct the past. They tell you what you stored, but not necessarily when it was valid in the business or when you knew it.
This is why we use dual SCD2 (bitemporal historization).
What is dual SCD2?
Dual SCD2 maintains two independent timelines:
- Business-valid time — when a fact was true in reality (e.g., a customer’s address was valid from Jan 1 to Jun 30).
- System-valid time — when we recorded or knew this fact (e.g., we only received the update on Jan 15).
With these two axes, we can answer questions like:
- What did we know about this customer on February 1?
- What was the customer’s true address on January 5?
- How did our knowledge of the past evolve?
Why it matters for the platform
Dual SCD2 is not just theoretical purity. It’s the foundation for:
- Reliable replay — rebuilding reports exactly as they looked at a point in time.
- Auditability — showing what the system knew vs. what was true.
- Flexibility — powering multiple exposure layers (as we’ll see in Article 4).
Dual SCD2 historisation in the source layer preserves raw history, and dual SCD2 integration in the business layer combines that history across domains. Together, they form the backbone of a trustworthy platform.
👉 Next up: PIT Helper Tables: Making Dual SCD2 History Fast and Usable