Cumulative Table Design
The pattern behind dim_all_users: full-outer-join yesterday to today, coalesce, and carry all of history in one row. Complex types (struct, array, map), the compactness-vs-usability tradeoff, temporal cardinality explosions, why run-length encoding is the reason Parquet won, and how to collapse cumulative history into an SCD Type 2 with window functions and a hand-rolled incremental merge.
The pattern behind dim_all_users: full-outer-join yesterday to today, coalesce, and carry all of history in one row. Complex types (struct, array, map), the compactness-vs-usability tradeoff, temporal cardinality explosions, why run-length encoding is the reason Parquet won, and how to collapse cumulative history into an SCD Type 2 with window functions and a hand-rolled incremental merge.
Course content
Prerequisites
What to learn next
Read the first chapter free
Start reading now — no account required for the free chapters.