Skip to content

What a semantic layer is, and what define once really means

A semantic layer gives a metric one home. Each tool that works out the metric reads that one home. They all get the same number. Here is what that means in practice, and what changes when you run more than one warehouse.

Updated · 6 min read

The same name, two numbers

Two people open two dashboards. Both are labelled Net Revenue. The two numbers differ by four percent. Both hold up, because each was worked out somewhere else. One came from a workbook calculation. The other came from a view in the warehouse, and neither one knows the other exists.

This is usually not a problem with the data itself. The warehouse is fine. The trouble sits somewhere else. The definition of Net Revenue lives in more than one place, so there is more than one of it.

A semantic layer fixes that one failure. It gives a metric a single home. Other people then read the metric rather than write it out again.

What a semantic layer is

A semantic layer is a governed description of your data. It sits between the physical tables and the people asking questions. It holds three kinds of thing.

  • Entities. The business objects you talk about: customer, order, policy, claim.
  • Dimensions. The ways you slice them: region, product line, month, channel.
  • Measures. The numbers, each carrying the exact expression that produces it.

The expression is the part that matters. Naming a field Net Revenue does not create a semantic layer; it becomes a measure the layer can use once it records its aggregation, its filters and its grain. Those three are then published and enforced.

A semantic layer is a contract, not a copy of your data. It stores no rows. It stores the agreed meaning of them, and points at the tables that carry them.

What define once means

Once means the expression sits in exactly one place. Each tool that needs the metric reads it from there.

  1. A person defines the measure in the warehouse, with its expression, its grain and its filters.
  2. The definition is published as a governed object. The platform itself understands it. It is not a document about the platform.
  3. Every question naming that measure is answered by running the stored definition.
  4. A change to the definition changes every answer, in one edit, under one review.

The test is blunt. Change the definition of Net Revenue in one place. If every dashboard, notebook and assistant follows, the metric is defined once. If other copies have to be found and edited, it was never defined once.

The same idea, four names

All four major platforms now ship this. Each one calls it by a different name. The words matter more than they should. A warehouse team knows their own object by its own name, and the wrong word makes that talk harder than it needs to be.

Salesforce Data 360
A semantic model, registered in Data 360. The question surface it feeds is Tableau Semantics.
Snowflake
A semantic view, catalogued in Horizon Catalog. The question surface it feeds is Cortex Analyst.
Databricks
A metric view, catalogued in Unity Catalog. The question surface it feeds is Genie.
Palantir AIP
An ontology, published in Foundry. Object types carry the entities and their dimensions, and a Function is where a measure is declared.

Four names, one shape. Each is a named object holding entities, dimensions and measures. Each one lives in the platform’s own catalogue, so the platform’s own tools respect it. Foundry is the one that will not name a measure for you. When someone says their company has a semantic layer, this is the object they mean. Asking which of the four they built gets you there faster than asking what it holds.

One note from real use, learned by probing a live Snowflake account. Dimensions there must be qualified by their entity. The same dimension name is often set up on two entities at a different grain, and a bare name could mean either. Snowflake refuses it as ambiguous. That is the right behaviour, and it makes for a confusing start.

Running more than one warehouse

Inside one platform, define once is a short sentence to say. Most companies of any size run at least two platforms. That is not going to change.

The same logical table then gets defined twice, once per platform, by two teams under two review processes. Both definitions are governed. Both can still drift apart. Nothing in either platform is watching the other.

Boreon’s TabTotal reads the catalogues into one object model. The same schema and table can turn up in several places. It lands as one object remembering every source it came from, not separate objects with no link. Every pair of connected warehouses is then compared, and where two structures disagree the gap is logged as a governance finding naming that pair. You read it in a report, not in a meeting.

That comparison reads what the catalogues declare. One question is never put to several warehouses to see whether their answers match: a query naming fields from more than one is refused, not routed, because there is no engine underneath them both.

What it inherits

A semantic layer that asks you to retype your catalogue becomes a second catalogue. Second catalogues go stale. The first sync reads what already exists: tables, columns, comments, tags, keys and grants. Naming conventions add to that, and are never required. A warehouse that matches none of the expected patterns still comes in whole.

The layer name comes from the object’s own qualified label. A comment about the object does not decide it. A table in meta is in the meta layer. A table in gold is in gold. The list of layer names is open. A name nobody taught the tool still lands correctly. A closed list would collapse it into unknown, along with every other convention it had not met.

Where a declared comment and the object label disagree, both are kept, and the gap is itself a finding. Taking on your own taxonomy and spotting when it argues with itself are the same job.

Why the contract is enforced

A published definition that nothing checks is a document. The value shows up at one moment. A query names a measure. The stored definition is checked before that query runs.

In this product, the names that reach the warehouse are the contract’s own copies. A name outside the contract has no code path to a warehouse at all. The query comes back naming what was off contract. The result is row-capped as well.

That property is built into the code, not written into an instruction. An instruction to a model can be ignored. A code path that does not exist cannot be persuaded. The effect for whoever runs the site is narrow and useful. Through this product, a governed measure has one way to be worked out, and it is the official one.

Where to look

  • The semantic console shows what synced, per warehouse, with counts and parity chips.
  • The integrations console shows which credential each connection used, with host, role and warehouse. The secret itself never shows up.
  • The field record carries nine attributes per field, including owner, steward and classification. You can see what is documented and what is not.

A first sync often reports mostly unknown owners. The tool is working. What you are seeing is how much of your catalogue is documented today, shown plainly. An empty layer scores zero. Zero is the only starting point worth having.