Semantic Models
Intermediate 13 min read Semantic Models

The Semantic Layer Overview

The business vocabulary between the warehouse and the reports

A semantic layer is the agreed business vocabulary above your tables: measures, dims, metrics and rules defined once, consumed by every report, with the underlying goo — the dbt models, warehouse SQL — hidden behind it.

semantic layermetrics layerdbt Semanticbusiness vocabularygovernance
Before we start

What you will learn

  • Explain what a semantic layer is and what it hides
  • Map its three parts: definitions, serving, consumption
  • Position it inside the modern BI stack
Introduction

What is this?

The semantic layer is an abstraction between raw warehouse tables and reporting tools. It defines metrics ('Revenue', 'Active Customers'), dimensions and relationships once, in a governed, reusable form, and serves them to whatever front-end (Power BI, Tableau, dashboards, APIs) asks. Its job: business users consume terms, not table schemas — and every consumer gets the same definitions.

Motivation

Why do you need it?

  • It kills the 'six teams, six definitions of revenue' problem.
  • Self-service stays consistent because the vocabulary is the contract.
  • Front-ends come and go; the semantic layer outlives all of them.
  • Metrics governable centrally (owners, tests, docs) rather than scattered.
Think about it

Mental model

Imagine

A restaurant menu

Think of

The semantic layer

Customers read the menu ('Grilled Salmon'), not the kitchen's 47 components and suppliers. The menu is a stable, curated vocabulary; the kitchen (warehouse) can rearrange radically and the menu barely changes. Bad architecture skips the menu and tells diners to read inventory sheets.

Mechanics

How it works

  • Definitions: metrics, dimensions, relationships authored once (in code for modern layers).
  • Serving: a query service executes the vocabulary against the warehouse, optimized per consumer.
  • Consumption: BI tools and apps call the layer's API instead of writing their own joins.
  • Governance: owners, tests, freshness and certification applied centrally.
  • Interchange: SQL/API endpoints expose the same metric to every tool.

Warehouse → semantic layer → many consumers.

Warehouse
Semantic layer
Serving API
BI front-ends
Consumers
Hands-on

Examples

Vocabulary vs implementation

Vocabulary vs implementation
THE LAYER DEFINES (once):
Revenue = SUM(fact_sales[amount])
Orders = COUNT(DISTINCT fact_sales[order_id])
Date = dimension on dim_date
Region = dimension on dim_customer
CONSUMERS SEE:
"Revenue by region, last 30 days" -- not the join
"Orders this week" -- not the filters
THE WAREHOUSE CAN CHANGE:
fact_sales re-modeled; the layer remaps, menus stay.

The semantic layer is a stable dictionary; engine changes behind it don't ripple into every workbook.

Real world

In production

  • A metrics layer backs revenue/active dashboards in BI tools and a Python alerting bot — same numbers.
  • Marketing, finance and exec buy the same 'Revenue' metric with one owner, not three.
  • A headless layer serves SQL and API so embedded analytics reuse the same definitions.
Guidelines

Best practices

  • Author the layer in code (version-controlled) — not in pro has, tools.
  • Make metric names noun-like and documented with owners.
  • Expose a thin serving API/SQL endpoint for consumption.
  • Test metrics (nulls, uniqueness, freshness) in CI like models.
Watch out

Common mistakes

  • Recreating definitions per report (a layer in name only).
  • Exposing table-granular quirks through the layer.
  • No owners/tests/certification — the layer becomes a second warehouse.
  • Locking to one front-end so reuse dies with that tool.
When things break

Debugging tips

  • Two tools show different revenue → both bypass the layer; enforce the serving endpoint.
  • Layer 'works' but feels slow → inspect the query the serving engine generates.
  • Freshness complaints → the metric freshness test isn't wired; add alerts.
Interviews

Interview checkpoint

Practice

Hands-on lab

Model a Minimal Semantic Layer with Views
45 min · intermediate
In progress
Objectives
  • Wrap warehouse tables in a vocabulary view
  • Define two canonical metrics
  • Serve consumers through the layer analog

Model a Minimal Semantic Layer with Views

45 min · intermediate

0/5 steps
0%
sandbox · Linux sandbox
$
Try these commands
Test yourself

Quick quiz

0/2
1

What sits between the warehouse and the reports?

2

A semantic layer means every report re-defines its own metrics.

Go deeper

Official documentation