A semantic layer sits between where data is physically stored and how people talk about it. It holds the business meaning: what an asset is, what counts as critical, what a remediation window means, and how each metric is computed from those concepts.
Query the semantic layer and you ask for endpoint coverage. Query the storage directly and you write a join across four tables with three filters you have to remember.
One definition instead of many. Without a semantic layer, the meaning of a metric lives inside each query that computes it. Four teams write four queries, and four slightly different definitions come into existence without anyone deciding.
Independence from physical structure. Tables get partitioned, sources get migrated, storage gets reorganised. The semantic definition survives all of it.
Reviewability. A definition expressed in business terms can be checked by the person who owns the concept. A definition expressed as SQL can only be checked by someone who reads SQL, which excludes most of the people who should be approving it.
A business intelligence tool has a semantic layer, and for reporting purposes it works.
What it generally does not do is retain the source records in a form that lets you recompute the past under a corrected definition, or stamp each stored value with the definition version that produced it, or hold a definition stable while the underlying source system is replaced.
BI is built to visualise a warehouse that someone else keeps correct. Measurement needs the layer underneath to be the thing that is kept correct.
Keep definitions declarative rather than procedural. A stated formula can be versioned, diffed and reviewed. A script cannot, usefully.
Reference other definitions by name rather than restating them. If critical asset is defined once and referenced by fifteen metrics, changing the definition changes all fifteen consistently.
Keep the layer above the canonical schema, not merged into it. The schema says what the data is. The semantic layer says what it means.
From the blog