Skip to content

How BigQuery MERGE DML Works for CDC Final State

April 2026

BigQuery CDC gets easier to trust when you think in final-state tables, not just a pile of landed events.

Short Answer

BigQuery MERGE DML is the part that turns a stream of inserts, updates, and deletes into a table analysts can actually trust. In Skippr, that means CDC is not finished when the event lands. It is finished when the destination row state is right.

That changes how you design the pipeline. Business keys, replay handling, and ordering rules matter because they decide whether the MERGE produces the expected final state after retries.

Why Teams Struggle with This

A lot of CDC conversations stop at transport. BigQuery is where the harder question shows up: what happens when an update is replayed, a delete arrives late, or the same key appears twice in a retry window?

  • Landing append-only events is not the same as maintaining a usable final-state table.
  • A weak business key makes MERGE logic look broken when the real issue is row identity.
  • Retry behavior can inflate row counts if the warehouse contract is vague.
  • Teams often push this logic downstream into dbt even though it belongs closer to ingestion.

How Skippr Handles It

Skippr keeps the warehouse semantics close to the CDC config. The source change stream, the business-key definition, and the BigQuery merge behavior all live in one path, so the team can reason about them together.

That usually leads to cleaner bronze tables, cleaner final-state tables, and a better starting point for the generated dbt project.

  • Business keys are explicit instead of implied in downstream SQL.
  • BigQuery MERGE DML is part of the CDC contract, not an afterthought.
  • Retries can be reasoned about in terms of final-state correctness.
  • The dbt project starts from warehouse tables that already reflect the right row state.

What the First Useful Version Looks Like

If the BigQuery table is the thing people query, that table is the product. Designing CDC around MERGE semantics is how you keep the product stable.

That is the useful mental model here.