Semantic view (definition) vs semantic execution layer
A semantic view defines business meaning inside one warehouse. A semantic execution layer compiles that meaning into governed SQL across many warehouses. The table below sets the frame for the rest of this guide.
| 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 16+ 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 |
What a Snowflake semantic view is
A semantic view is a schema-level database object. It stores business metrics, dimensions, and entity relationships directly in the warehouse. In Snowflake's words, a semantic view defines business concepts over your data. Users and AI can then query in business terms rather than raw columns. Semantic views give AI agents a governed vocabulary. They power Cortex Analyst and Snowflake Intelligence (rebranded Snowflake CoWork at Summit 2026).
You create one with CREATE SEMANTIC VIEW. You specify 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.
Each part plays a clear role. Tables name the base data. Relationships describe how the tables join. Facts are row-level measures, such as an order amount. Dimensions are the attributes you group by, such as region or month. Metrics are the aggregates the business cares about, such as total revenue. Together these parts turn raw columns into a shared vocabulary that both people and agents can trust.
Where semantic views stand in 2026
Snowflake shipped semantic views in stages. The core DDL reached general availability at Summit 2025. Standard SQL querying reached general availability on 2 March 2026. Semantic View Autopilot, which auto-generates a view from your schema, reached general availability on 3 February 2026. Advanced Semantics and Semantic Studio are in private preview as of Summit 2026.
Semantic views power Snowflake's AI features. They feed Cortex Analyst for natural-language questions. They also feed Snowflake Intelligence (rebranded Snowflake CoWork at Summit 2026), Snowflake's agent experience. One governed object serves both paths. For how Cortex Analyst compares to Databricks Genie, see Cortex Analyst vs Genie.
How you create one: CREATE SEMANTIC VIEW syntax
A semantic view is a schema-level object. You define it once with CREATE SEMANTIC VIEW, and every tool that reads it sees the same metrics. This is the grammar Snowflake documents:
CREATE [ OR REPLACE ] SEMANTIC VIEW [ IF NOT EXISTS ] <name>
TABLES ( logicalTable [ , ... ] )
[ RELATIONSHIPS ( relationshipDef [ , ... ] ) ]
[ FACTS ( factExpression [ , ... ] ) ]
[ DIMENSIONS ( dimensionExpression [ , ... ] ) ]
[ METRICS ( metricExpression [ , ... ] ) ]
[ COMMENT = '<comment>' ]
[ COPY GRANTS ]
Clause order is not optional. FACTS must come before DIMENSIONS. Snowflake rejects the statement otherwise, which is the first error most teams hit.
A worked example over the TPC-H sample data, adapted from Snowflake's documentation:
CREATE SEMANTIC VIEW tpch_rev_analysis
TABLES (
orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
PRIMARY KEY (o_orderkey)
WITH SYNONYMS ('sales orders')
COMMENT = 'All orders for the sales domain',
customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
PRIMARY KEY (c_custkey),
line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
PRIMARY KEY (l_orderkey, l_linenumber)
)
RELATIONSHIPS (
orders_to_customers AS
orders (o_custkey) REFERENCES customers,
line_item_to_orders AS
line_items (l_orderkey) REFERENCES orders
)
FACTS (
line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
orders.count_line_items AS COUNT(line_items.line_item_id)
)
DIMENSIONS (
customers.customer_name AS customers.c_name
WITH SYNONYMS = ('customer name'),
orders.order_year AS YEAR(o_orderdate)
)
METRICS (
customers.customer_count AS COUNT(c_custkey),
orders.order_average_value AS AVG(orders.o_totalprice)
)
COMMENT = 'Semantic view for revenue analysis';
Three things are worth noting in that statement. Aliases in TABLES become the names every downstream query uses. RELATIONSHIPS declares the join paths in advance, so Cortex Analyst does not guess them. And WITH SYNONYMS is what lets a natural-language question say "customer name" and resolve to c_name.
How you query one
You query a semantic view with the SEMANTIC_VIEW() construct inside a SELECT. You choose the metrics, facts, and dimensions you want. Three rules shape the query:
- 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. A queried dimension's logical table must relate to the metric's logical table.
Putting that together, a query against the view above looks like this:
SELECT * FROM SEMANTIC_VIEW(
tpch_rev_analysis
DIMENSIONS orders.order_year, customers.customer_name
METRICS orders.order_average_value
);
These constraints make the object safe and queryable. They also hint at its scope. A semantic view is a governed structure over one warehouse's data. It is not a compiler. A view describes valid shapes for a query. It does not resolve intent, prove the join path, or apply access rules before the query runs. For what a compiler adds, see what is a semantic compiler.
Semantic view vs semantic model
Snowflake offers two ways to describe business meaning. They are not the same object, and the difference matters.
A semantic model is an external YAML file. You store it on a stage, and only Cortex Analyst can read it. A semantic view is a schema-level database object. BI tools can query it directly, and so can Cortex Analyst.
Snowflake now recommends semantic views over semantic models. A view lives in the catalog. It inherits object-level access controls, and it serves more consumers than a model does. If you built on semantic models earlier, plan a move to views. For a broader vendor view, see the semantic layer buyer's guide 2026.
Limits and gotchas
Semantic views have real boundaries. Plan for them before you scale.
- Table count. There is no hard cap. Snowflake recommends fewer than 10 tables per view.
- Column count. Aim for about 50 columns for good performance.
- Cortex Analyst size cap. A view used by Cortex Analyst must stay under 1 MB, roughly 32,000 tokens.
- No cross-account replication. You cannot replicate a semantic view to another Snowflake account.
These limits keep a single view fast and legible. They also show its scope. A semantic view models one focused subject area in one account. It does not model a whole multi-warehouse estate. For picks beyond Snowflake, see Cortex Analyst alternatives.
Where semantic views stop
- Snowflake-only. A semantic view describes Snowflake data. Cross-warehouse questions need the data in Snowflake first. For the multi-cloud picture, see Snowflake vs Databricks semantic layer.
- Definition, not execution. A semantic view is a governed vocabulary. Turning a question into governed, deterministic SQL is the job of the consumer, such as Cortex Analyst. That path is strong, but Snowflake-bounded and LLM-driven.
- 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. A well-governed semantic layer that understands business context creates more reliable AI-driven analytics than fine-tuning the model itself.
What a semantic execution layer adds
Colrows consumes the same business meaning and goes further. It compiles intent through a typed semantic graph into deterministic, dialect-perfect SQL. It runs across Snowflake and 16+ other engines. It proves join paths. It enforces governance before execution, so filtered rows are never read.
The runtime path is one line: intent, context resolution, constrained planning, governed execution. A single warehouse object cannot span a multi-warehouse estate. That is the difference between a definition and a semantic execution layer.
For teams on Snowflake today but planning a multi-warehouse, agent-driven future, the two are complementary. The semantic view is the vocabulary. The semantic execution layer is the compiler that governs it everywhere. Databricks' equivalent object is covered in Databricks Metric Views explained. To see how Colrows fits your stack, compare the options.
If you are evaluating what sits on top of the semantic view rather than the view itself, the assistant layer is a separate decision: see conversational BI tools scored on governance and determinism, and run candidates through the semantic layer evaluation checklist. If accuracy is the deciding factor, the enterprise text-to-SQL accuracy benchmark shows why published scores collapse on real schemas.
For the products that sit above Semantic Views, see Snowflake AI tools compared.
Frequently asked questions
What are Snowflake semantic views?
A Snowflake semantic view is a schema-level database object. It defines tables, relationships, facts, dimensions, and metrics over your data. Users and AI can then query in business terms instead of raw columns. Semantic views give AI agents a governed vocabulary. They power Cortex Analyst and Snowflake Intelligence (rebranded Snowflake CoWork at Summit 2026).
How do they work with Cortex Analyst?
Cortex Analyst reads the semantic view to map a natural-language question onto governed facts, dimensions, and metrics. You can attach AI instructions and verified queries to guide it. For Cortex Analyst use, a semantic view must stay under the 1 MB or roughly 32,000-token limit. Snowflake reports 90%+ accuracy on an internal 150-question benchmark, which is not independently verified.
What are the limitations of Snowflake semantic views?
They describe Snowflake data only, and cross-account replication is not supported. Snowflake recommends fewer than 10 tables and about 50 columns per view for performance. Views used by Cortex Analyst must fit the 1 MB or roughly 32,000-token cap. They are hand-authored objects that define structure rather than enforce compile-time governance across warehouses.
Semantic view vs semantic model, which should I use?
A semantic model is an external YAML file on a stage, used by Cortex Analyst only. A semantic view is a schema-level object that BI tools can also query. Snowflake now recommends semantic views over semantic models. Choose a semantic view unless you have an existing model to maintain.
Can a Snowflake semantic view span other warehouses?
No. A semantic view is a single object inside one Snowflake account, and cross-account replication is not supported. It cannot span Databricks, BigQuery, or another Snowflake account. A semantic execution layer such as Colrows compiles one semantic graph across Snowflake and 16+ engines.



