A metrics layer defines the numbers. A semantic layer defines the numbers and the model around them — the entities they belong to, the dimensions you can slice them by, the paths between tables, and the rules about who can see what.
That's the whole distinction, and for years it didn't matter much. It matters now because AI agents ask questions nobody wrote down in advance.
Why the terms drifted together
"Metrics layer" and "metrics store" entered the vocabulary around 2021, describing a specific fix for a specific pain: the same metric implemented slightly differently in every dashboard, so nobody could say which "revenue" number was right. Centralizing the definitions solved that.
Then two things happened. Metrics-layer products grew — once you're defining a measure, you need to say what it can be grouped by, which means dimensions, which means entities, which means joins. And semantic-layer products, which had modeled all of that since the OLAP era, started leading with their metrics because that's the pain buyers recognized.
The result is that today most tools called a metrics layer are, structurally, semantic layers with a narrower emphasis. It's more useful to treat "metrics layer" as a scope — the measures — than as a distinct product category.
What each one actually contains
A metrics layer, in its narrow sense, holds:
- Measures —
revenue,active_users,gross_margin, each with an agreed formula - Usually some notion of valid dimensions for each measure
- Often ownership and description metadata, so people know who defined it and what it means
A semantic layer holds all of that, plus:
- Entities — the business objects the measures belong to: customers, orders, subscriptions
- Dimensions — the attributes you can slice by, defined once with their own logic
- Join paths — how the entities relate, so a query can traverse from an order to the account that placed it to the region that account sits in
- Access rules — row-level and column-level policies, evaluated before SQL is emitted rather than filtered afterward
- Query-time extensibility — the ability to compose new calculations on top of governed definitions without editing the governed definitions
The difference in practice: one question
Take a question a business user might actually ask:
"What was net revenue by acquisition channel for enterprise accounts in EMEA last quarter?"
A metrics layer can hand back net_revenue correctly. Whether it can answer the full question
depends entirely on whether someone anticipated this combination — net revenue, sliced by acquisition
channel, filtered to a customer segment and a region. If that combination wasn't registered, the layer
returns the metric and the consumer is on its own for the rest.
A semantic layer resolves the whole thing, because it knows that an order joins to an account, that an account has a segment and a region, and that acquisition channel is an attribute of the account's first touch. It composes the SQL, applies the access rules, and returns one number.
The gap between those two outcomes is small when a human analyst is in the loop — they'll write the join themselves. It's decisive when the thing asking is an agent.
Why AI made this distinction load-bearing
Point an LLM at raw warehouse tables and it will write SQL. It will also, on every prompt, re-derive which table to join to which, what counts as an active customer, and whether refunds are subtracted before or after discounts. Ask the same question twice, phrased differently, and you can get two different numbers — both plausible, both confidently reported.
A metrics layer helps but doesn't close this. It gives the agent certified measures; it doesn't necessarily give it the entity graph needed to slice those measures in a way nobody pre-registered. The agent still improvises the parts that weren't covered, and the improvised parts are where wrong answers come from.
A semantic layer for AI agents closes it, because the model contains the joins and the access rules. The agent's job becomes selecting from certified definitions rather than reconstructing them. That's what Brex meant in choosing Cube over the dbt Semantic Layer and LookML: the semantic layer encodes what "spend" means at Brex, which is what makes the agent's answers useful rather than merely fluent.
This is also where the governance-versus-flexibility tradeoff dissolves. The usual choice is to lock the model down until nobody uses it, or open it up until there are fifteen definitions of "churn." A SQL-first semantic layer that's extensible at query time keeps the governed definitions fixed while letting agents and analysts build ad-hoc calculations on top of them.
How to tell which one you're looking at
Four questions that sort a product quickly:
- Can it answer a question that combines a measure with a dimension nobody registered together? If yes, there's an entity model underneath. If it needs the combination pre-defined, it's a metrics layer in the narrow sense.
- Does it know how your tables join? A semantic layer holds the join graph. A metrics layer often assumes someone else resolved that.
- Where are access rules enforced? A semantic layer evaluates them before generating SQL. If filtering happens in the consuming tool, each tool has to be trusted to do it correctly.
- Are the definitions code? SQL-first models in version control can be reviewed, diffed, and tested. UI-only definitions can't.
Where Cube fits
Cube Core is the semantic layer — open source under Apache 2.0, and the original Cube project. It defines measures, dimensions, entities, join paths, and access rules in SQL-first models that live in version control, on top of the warehouse you already run: Snowflake, BigQuery, Redshift, or Databricks. It reads dbt models directly, so transformation stays in dbt and query-time governance lives in Cube.
Cube is the agentic analytics platform built on that foundation. The same governed definitions serve Analytics Chat for natural-language questions, workbooks and dashboards for internal BI, embedded surfaces for customer-facing analytics, and an MCP server so agents in Claude or ChatGPT answer from certified metrics. One model, every surface — which is the practical form of the distinction this article is about.
If your immediate problem is that two dashboards disagree about one number, a metrics layer will solve it. If the next thing on your roadmap is an AI agent answering freely, or analytics embedded in your product, you'll want the entity model underneath — which is the semantic layer.
Methodology
Definitions here follow how the terms are used across current semantic-layer and metrics-layer product documentation as of August 2026, not a single vendor's glossary. We build Cube, so the closing section is explicitly about our own product; the preceding sections are written to hold regardless of which tool you pick. Where the industry genuinely uses a term loosely — as it does with "metrics layer" — we say so rather than inventing a crisper distinction than exists.
Frequently asked questions
- What is the difference between a semantic layer and a metrics layer?
- A metrics layer defines measures — revenue, active users, churn — centrally, so that every tool computing 'revenue' computes it the same way. A semantic layer does that too, but also defines the entities those measures belong to, the dimensions you can slice them by, the join paths between tables, and the access rules that decide who sees what. In short: a metrics layer governs the numbers; a semantic layer governs the numbers and the model they live in. In practice most metrics layers have grown into semantic layers, so the terms are often used interchangeably.
- Is a metrics layer the same as a metrics store?
- Effectively yes — 'metrics store' and 'metrics layer' are used interchangeably for the same idea: a central place where metric definitions live so they aren't reimplemented in every dashboard and query. Some tools use 'store' to emphasize that definitions are persisted and versioned. Neither term implies the entity and join modeling that a semantic layer adds.
- Do I need a semantic layer if I already have dbt?
- They do different jobs and work well together. dbt transforms raw data into clean, modeled tables — shared, persistent logic materialized in your warehouse. A semantic layer sits on top and governs query-time logic: which measures exist, how tables join, which dimensions are valid, and who's allowed to see what. Cube reads dbt models directly, so the usual pattern is dbt for transformation and Cube for the governed query-time model that dashboards, embedded apps, and AI agents consume.
- Why does the distinction matter for AI agents?
- Because agents ask questions nobody pre-registered. A metrics layer can hand back a metric that was defined in advance; it can't necessarily resolve 'revenue by acquisition channel for enterprise accounts in EMEA' unless that combination was anticipated. A semantic layer can, because it knows the entities and join paths. Without that, the agent writes its own SQL against raw tables, re-deriving joins and filters on every prompt — which is exactly how the same question comes back with different numbers.
- Is a semantic layer just a database view?
- No. A view materializes one shaped result; a semantic layer is a model that generates SQL on demand for many possible questions. Ask for a different grain, a different filter, or a different combination of dimensions and the semantic layer composes the appropriate query from the model, applying access rules before the SQL runs. You'd need a combinatorial number of views to cover what one semantic model covers.
- Which comes first — a metrics layer or a semantic layer?
- Most teams start with a metrics problem: two dashboards disagree about the same number. Defining those metrics centrally solves the immediate pain. The semantic layer question arrives shortly after, when people want to slice those metrics in ways nobody pre-registered, or when an AI agent needs to answer freely. Starting with metric definitions inside a real semantic model saves the migration later.
- Is Cube a metrics layer or a semantic layer?
- Cube Core is a semantic layer — Apache 2.0 open source, defining metrics, dimensions, entities, join paths, and access rules in SQL-first models kept in version control. That includes everything a metrics layer does. Cube is the agentic analytics platform built on Cube Core, adding Analytics Chat, workbooks, dashboards, embedded surfaces, and an MCP server, so the same governed definitions serve every surface.
- Can a semantic layer and a metrics layer coexist?
- Yes, and in larger organizations they often do — a team may already publish metric definitions from one system while a semantic layer governs the broader model. The thing to avoid is two systems that both claim to be the source of truth for the same measure, because that reintroduces exactly the drift both were meant to prevent. Pick one place where a given metric is defined.
- Does a semantic layer slow queries down?
- It shouldn't, and it often speeds them up. The semantic layer generates SQL that runs on your warehouse, so the compute is the same engine you already use. Cube adds pre-aggregation caching, which materializes common rollups so repeated queries hit a condensed table instead of scanning raw data — this is why embedded workloads with high concurrency stay fast.