Group 1 - Intermediate¶
Your slice of MediaPulse¶
The mediapulse_base project already exists, with a working staging → intermediate → marts layering across podcasts and news. Your job across today is to work with that project the way a new hire would: understand it via tooling before touching code, refresh your modeling fundamentals against real models, close real test gaps, eliminate real repetition with macros, and try dbt's AI assistant on real work.
Everything in Part 1 and Part 2 lives in mediapulse_base. You won't need mediapulse_analytics today - that's Group 2 and Group 3's territory once dbt Mesh enters the picture.
Learning objectives¶
By the end of today you will be able to:
- Navigate a project's lineage, test coverage, and documentation using dbt Catalog, without reading every file
- Explain what each layer of a
staging → intermediate → martsproject is responsible for, and argue where a piece of logic belongs - Decide which columns genuinely need a test, write generic, singular, and
dbt_utilstests, and configure test severity - Read, and write, Jinja macros that remove real repetition in a project
- Build a snapshot with the correct change-detection strategy for a given column
- Explain what
access,group,contract, and model version each do, and when to reach for each one - Convert a model to incremental, justify a strategy choice, and know when a full-refresh is unavoidable
- Write clear YAML documentation and test suggestions by hand for unfamiliar code, and know where an AI assistant like dbt Wizard would help in the real world
Relevant project¶
You'll work exclusively in mediapulse_base:
models/staging/- news, podcasts, streaming, adsmodels/intermediate/- campaign spend allocation, episode listen completionmodels/marts/- campaigns, dates, and (by the end of today) your own snapshot and incremental additions
See the MediaPulse overview for the underlying business context and raw table details, and mediapulse_base/README.md for the project's own structure notes.