Overview
Don't model the company; model one fact table
Every failed semantic-layer rollout starts the same way: a task-force tries to model every domain at once. After three months they ship nothing. The successful rollout is deliberately small.
The 90-day plan
Weeks 1-2 — Pick the keystone fact. Choose one fact table whose metrics drive the most disputed questions (usually orders, events, transactions or sessions). Ship one semantic model and 5 metrics with owner: and description:.
Weeks 3-4 — Replace one dashboard. Re-point ONE existing executive dashboard at the semantic layer. Verify numbers match (or that the new ones are correct and the old were wrong — that conversation is the prize). Add the dashboard's URL to the metric's metadata.
Weeks 5-6 — Add the second consumer. A notebook, a Streamlit, an embedded chart — anything that isn't the same BI tool. This is when the layer stops being 'a Tableau backend' and becomes a real semantic interface.
Weeks 7-8 — Contracts & ownership. Add metric_contract.yaml for every shipped metric. Wire CI to fail PRs that change a definition without bumping the version.
Weeks 9-10 — Pre-aggregations. Instrument query traffic, find the top 5 query shapes, build pre-aggregations for them. Publish the rollup-hit-rate dashboard.
Weeks 11-12 — Activate. One reverse-ETL sync, or one LLM-tool integration. Prove the metric reaches a non-BI surface unchanged.
Week 13 — Retro & roadmap. What 5 metrics ship next quarter? Which fact table after orders? Who is the next owner?
What to refuse
- 'Let's model everything in OWL first' — slow path to nothing shipped. Start tabular; bridge to ontology later if scale demands it.
- 'Let's switch BI tools at the same time' — two tool migrations at once is one tool migration that fails twice.
- 'Just use views in the warehouse' — that's where the five-revenues problem starts. The semantic layer must be a compiler, not a shelf of SQL.