dbt Exposures document the downstream consumers of dbt models — Superset dashboards, Streamlit apps, Jupyter notebooks, Slack bots, or ML training jobs that read from a specific dbt Gold model. Without exposures, data engineers cannot tell which models are consumed by which business-critical applications, making it impossible to assess the impact of a schema change before it breaks production dashboards. Exposures appear in the dbt Docs lineage graph, showing exactly which applications depend on each model and who owns each application.
The dbt Data Catalogue (generated by `dbt docs generate`) produces a searchable static website documenting every model, column, test, source, seed, snapshot, and exposure in the project. The documentation includes model descriptions (written in YAML or Markdown), column-level descriptions and data types, test coverage per column, and a full lineage graph showing every model's upstream dependencies and downstream exposures. The catalogue transforms a dbt project from a collection of SQL files into a self-documenting data platform that non-engineers can navigate to understand what data exists and how it was produced.
Analogy🏏Cricket
🏏 Think of it like cricket: OLTP is the IPL's live ticketing counter — it handles thousands of simultaneous seat reservations, each requiring a precise single-seat record update with immediate confirmation. Speed per transaction and data consistency under concurrent updates are everything. OLAP is the IPL's season statistics department — it runs complex analytical queries across every ball bowled in every match of every season to produce the published rankings, economy rates, and historical comparisons. No one books a seat through the statistics department, and no broadcaster calls the ticketing counter for Bumrah's career economy rate. The two workloads demand completely different systems. Just as the ticketing counter is built for speed and correctness on one seat at a time and would buckle if asked to tally a decade of attendance mid-sale, an OLTP row-store excels at single-record writes but chokes on full-table aggregation; and just as the statistics department pores over millions of past deliveries but would be hopeless at booking a live seat under contention, the OLAP columnar engine sweeps billions of rows yet is the wrong tool for a fast single-row update. The physical design of each — row-oriented for the counter, columnar for the stats desk — is what makes it superb at its own job and unfit for the other's.
🏏 Showing the Cricket analogy — a Cricket version isn’t available for this concept yet.