withsoon

Chapter

7 / 10

On this page

Daily DAG

Daily DAG

Visualize the batch publication path

Official daily truth should feel like an orchestrated system, not a text paragraph about Spark.

Interview flow

Raw -> Trusted -> Official -> Visible

If you remember just one sequence for this section, use this one. It gives you a clean story before you zoom into DAG mechanics.

Step 1

Raw source arrives

Source

Kafka playback topics + CDC profile/title snapshots + partner metadata files

Output

Complete Bronze partitions for the batch window

Batch should start only after all expected raw inputs for that day or hour have landed.

Step 2

Clean into Silver

Source

bronze.playback_events + content/profile dimensions

Output

silver.playback_events and trusted fact tables

This step parses raw JSON, removes duplicates, fixes timestamps, joins dimensions, and creates reusable clean tables.

Step 3

Publish official Gold

Source

Trusted Silver facts + dimensions

Output

gold reporting marts such as content watch-hours and daily business metrics

Only after DQ passes do we compute the final business tables that dashboards and leadership should trust.

Step 4

Make it visible

Source

Published Gold tables

Output

BI dashboards, warehouse tables, lineage, and downstream consumers

After publish, we refresh the systems that read Gold so everyone sees one consistent version of the truth.

Daily DAG

Follow the run in order. Hover or click a node to inspect what changes there.

Selected node

Wait for source partition

Inputs

Bronze partition readiness + upstream completion signals

Logic

Do not start downstream transformations on partial source data.

Output

Eligible batch run window

Why this node matters

This is where the batch run protects itself from partial truth. Starting too early creates expensive downstream correction work.

Say it out loud

At wait for source partition, the pipeline takes bronze partition readiness + upstream completion signals and applies do not start downstream transformations on partial source data. so the next stage receives eligible batch run window.

Storage flow

Show how multiple sources move through the lakehouse

Instead of isolated tools, show the order: raw inputs land, Bronze stores them, Spark builds Silver, Gold publishes official truth, and serving refreshes.

Storage flow

Sources to Bronze to Silver to Gold to Serving

This is the batch storage story in order: multiple raw inputs land first, trusted tables are built in the lakehouse, official Gold is published, and only then do serving systems refresh.

Step 1

Raw inputs

AWS

MSK + S3 drops

Open source

Kafka + CDC / partner files

Why this step exists

Playback events, dimension snapshots, and partner files arrive through different lanes before batch starts.

Step 2

Bronze landing

AWS

S3 + Glue Catalog

Open source

Iceberg Bronze tables

Why this step exists

Store immutable raw partitions first so replay, audit, and late correction stay possible.

Step 3

Silver build

AWS

EMR / Glue

Open source

Spark + dbt

Why this step exists

Batch joins, dedupes, normalizes, and validates raw inputs into reusable trusted tables.

Step 4

Gold publish

AWS

S3 + Iceberg snapshots

Open source

Iceberg / Parquet marts

Why this step exists

Official business tables are published atomically only after DQ and reconciliation pass.

Step 5

Serving

AWS

Redshift / Athena

Open source

Trino / Pinot

Why this step exists

Dashboards and analysts read Gold outputs from serving systems instead of touching raw storage directly.
Quality gates

Show what must pass before publish

Batch only becomes official when partitions are ready, checks pass, and downstream refreshes are safe.

Publish checklist

No partial truth crosses this line

The release rule is simple: if any gate fails, official tables stay untouched and the team debugs the staging run instead of patching dashboards later.

3 release gates
1
Partition readiness

Do we have complete raw inputs for the run window?

Wait for upstream Bronze partitions and completion signals before Spark starts.

Reject partial windows so downstream metrics never mix yesterday's complete data with today's incomplete arrivals.

2
DQ + staging checks

Is the trusted output internally consistent?

Run duplicates, nulls, impossible timestamp, and reconciliation checks on Silver and pre-publish Gold snapshots.

Write a staging Iceberg snapshot first so failed validations block publication without corrupting official tables.

3
Atomic publish + refresh

Can consumers see one clean official version?

Swap trusted snapshots into official tables only after checks pass.

Refresh BI, update lineage, and notify consumers so everyone reads the same published truth.

Last reviewed June 2026 Β· By Prasoon Parashar

Numbers are interview assumptions, not real Netflix internal figures.

Was this tab useful?