What a Snowflake semantic view is
A semantic view is a schema-level database object that stores business metrics, dimensions, and entity relationships directly in the warehouse. In Snowflake's words, they define business concepts over your data so users, and AI, can query in business terms rather than raw columns. They give AI agents a governed vocabulary and power Cortex Analyst, CoWork, and related Cortex features.
You create one with CREATE SEMANTIC VIEW, specifying TABLES, optional RELATIONSHIPS, and then FACTS, DIMENSIONS, and METRICS. You can attach AI instructions such as AI_SQL_GENERATION and AI_VERIFIED_QUERIES to guide Cortex Analyst.
How you query one
You query a semantic view with the SEMANTIC_VIEW() construct inside a SELECT, choosing the metrics, facts, and dimensions you want. Three rules shape it:
- You must specify at least one of
METRICS,DIMENSIONS, orFACTS. - You cannot specify
FACTSandMETRICSin the same clause. - If you use facts and dimensions together, they must belong to the same logical table, and a queried dimension's logical table must relate to the metric's logical table.
These constraints are what make the object safe and queryable, and they hint at its scope: a semantic view is a governed structure over one warehouse's data.
Semantic view (definition) vs semantic execution layer
| Dimension | Snowflake semantic view | Semantic execution layer (Colrows) |
|---|---|---|
| What it is | A definition object: governed vocabulary in the warehouse | A compile-time engine that resolves, proves, and governs queries |
| Reach | Snowflake data only | Snowflake plus 15+ engines, one graph |
| Governance | Structure plus inherited RBAC at execution | Compile-time RBAC + ABAC + row/column predicates |
| Determinism | Depends on the consuming AI (e.g. Cortex Analyst) | Deterministic by construction |
| Maintenance | Hand-authored object | Autonomous, continuously maintained graph |
Where semantic views stop
- Snowflake-only. A semantic view describes Snowflake data. Cross-warehouse questions need the data in Snowflake first.
- Definition, not execution. A semantic view is a governed vocabulary. Turning a question into governed, deterministic SQL is the job of the consumer (Cortex Analyst), which is a strong but Snowflake-bounded, hand-authored, LLM-driven path. See Cortex Analyst alternatives.
- Hand-authored. Someone writes and maintains the object as the schema drifts.
None of this is a criticism. Semantic views are a genuine step forward for governed AI on Snowflake. The point is scope: they are a governed vocabulary in one warehouse, not a cross-warehouse, compile-time execution layer.
Fix the Context, Not the Model. Snowflake semantic views are exactly this idea, encoded in the warehouse. The next step is proving and governing the query at compile time, and doing it across every warehouse, not just Snowflake.
What a semantic execution layer adds
Colrows can consume the same business meaning and go further: it compiles intent through a typed semantic graph into deterministic, dialect-perfect SQL across Snowflake and 15+ other engines, proves join paths, and enforces governance before execution so filtered rows are never read. For teams standardizing on Snowflake today but planning for a multi-warehouse, agent-driven future, semantic views and a semantic execution layer are complementary: the vocabulary, and the compiler that governs it everywhere. Databricks' equivalent object is covered in Databricks Metric Views explained.
Frequently asked questions
What is a Snowflake semantic view?
A schema-level object defining tables, relationships, facts, dimensions, and metrics so users and AI can query in business terms. It gives AI a governed vocabulary and powers Cortex Analyst.
How do you query one?
With the SEMANTIC_VIEW() construct, specifying METRICS, FACTS, and/or DIMENSIONS. You cannot mix FACTS and METRICS in one clause, and facts and dimensions used together must be in the same logical table.
What are the limits?
Snowflake-only, hand-authored, and a definition rather than a cross-warehouse compile-time execution layer.



