BigQuery + dbt (Modular ELT)
- Difficulty: Intermediate
- Tech stack: BigQuery, dbt (Core/Cloud), Git, Composer/dbt Cloud
- Estimated time: 1-2 hrs
Overview
You’ll connect dbt to BigQuery, declare raw tables as sources, and build staged/intermediate/mart models with Jinja + configs (partitioning/clustering where needed). Key tables use incremental materialization with `merge` on a unique key or updated_at. Tests enforce data quality; `dbt docs` produces searchable documentation and lineage. Jobs run on a cadence via dbt Cloud or Composer for production-grade EL
Outcome
- Modular SQL with sources → staging → marts using dbt.
- Reliable quality via tests (unique/not_null/relationships).
- Repeatable runs with incremental models + scheduler.
What you’ll build
- A dbt project wired to BigQuery (`profiles.yml`).
- Staging/intermediate/mart models with incremental materialization (`is_incremental`).
- sources.yml + schema tests (unique/not_null/relationships).
- Docs site (`dbt docs generate/serve`) and model lineage graph.
- (Optional) snapshots for history + seeds for lookups.
- (Optional) Composer/dbt Cloud job to schedule.