October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk8 min

The Semantic Compression Problem: Engineering AI-Ready Views for Complex SQL

Complex SQL often returns plausible but wrong totals because joins change the grain. Here is how to expose meaning, grain and metrics in a semantic view, and how to test it.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

An AI-ready semantic view is a layer that declares what your business entities mean: their grain, how they relate, which dimensions and metrics exist, which filters and date rules apply, and how each concept should be described. An AI system that generates SQL from that layer reconstructs far less meaning from raw schemas. The view is a contract for meaning and valid join paths. It does not make queries faster or correct by itself, so each view has to be tested against real questions with known correct answers.

Why complex SQL returns plausible but wrong totals

The typical failure looks like this: a query runs without error, returns a number in the expected range, and is still wrong. The usual cause is a join across tables that have different grains. Each join is valid on its own. Together they multiply rows, and an aggregate applied afterward counts the same business fact more than once.

As an Amazon Associate I earn from qualifying purchases.

Nikhil Raman K’s article on this problem uses a simple illustration. One order has four line items, and each line item has three events. Joining the order to its line items and then to the events produces 12 rows for that single order. The illustrative arithmetic below uses a hypothetical order amount of $100:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Orders: 1 row per order, with order_amount = 100
  • Line items: 4 rows per order (one per line item)
  • Events: 3 rows per line item, so 12 rows per order after both joins
  • A naive SUM(order_amount) over the joined result returns 1,200 instead of 100

The SQL is valid and the join is correct for the question “which events happened on which items?” It is wrong for the question “what was the order total?” Nothing in the SQL says which of those two questions it answers. That gap between computation and meaning is what the rest of this article addresses.

What “semantic compression” means here

“Semantic compression” is an architectural framing used in Nikhil Raman K’s article. It is not a standard database term. The idea is to reduce how much meaning a person or a model has to rebuild from physical tables and long queries. It does not necessarily reduce computation or the length of the SQL. A semantic view can be longer than the query it replaces and still be the better artefact, because it states once what the query was implicitly assuming.

The path from physical data to answered questions has seven stages:

  1. Physical data: tables, files and keys as they are stored.
  2. Transformation logic: staging, deduplication, type casting and technical joins.
  3. Grain and business concepts: what one row means, and which entities such as customer, order and product matter.
  4. Semantic view: the exposed entities, relationships, dimensions, facts, metrics, filters and descriptions.
  5. BI or AI questions: what people actually ask.
  6. Generated SQL: the query produced against the semantic layer.
  7. Validation and feedback: checking results and feeding failures back into the model.

Separate implementation details from reusable meaning

The main design task is deciding which parts of a long query belong in the semantic layer and which stay in the transformation layer. Keep anything that only exists to make the physical data usable. Expose anything a consumer would need to interpret a number.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Element Where it belongs Example
Staging and deduplication Transformation layer Removing duplicate event loads from a retry
Technical join keys and partitioning Transformation layer Surrogate keys, clustering columns
Query optimisation choices Transformation layer or physical tuning Pre-aggregated tables, clustering
Business entity Semantic view Customer, order, product
Grain of each table Semantic view and documentation “One row per order line item”
Metric definition Semantic view Net revenue, average order value
Date rule Semantic view Order date means placement date, not ship date
Business filter Semantic view Exclude cancelled and test orders from revenue

Start with grain and cardinality

Before you define any metric or relationship, write down what one row represents in each logical table. This is the single most useful step, because it tells you which joins fan out and which aggregates are safe. The example below is illustrative and has not been run against a live warehouse.

Logical table One row represents Relationship to orders Safe to sum order-level amounts?
orders One customer order Base table Yes
customers One customer Many orders to one customer Only after grouping by customer
order_items One line item on an order One order to many line items No, unless summed at item level
products One product Many line items to one product Only when grouped by product
item_events One event on a line item One line item to many events No

Write the relationship cardinality next to each join, not just the join condition. “Which joins are one-to-many?” is one of the most common questions an AI system or analyst needs answered, and a join key alone does not say it.

Model meaning for a bounded domain

Start from the questions people ask within one business domain, not from the full warehouse. Snowflake’s modeling guidance suggests 5 to 10 tables for an initial proof of concept, so that debugging stays manageable. That range describes a starting scope for the use case, not a limit on the model’s size.

For each domain, expose these elements explicitly:

  • Entities, with their primary identifiers
  • Dimensions for grouping and filtering, such as country, product category and order month
  • Facts, the numeric columns that metrics are built from
  • Metrics, each with one documented calculation
  • Filters that define which rows count, such as excluding cancelled orders
  • Relationships, with their cardinality

Define each business term once. A metric such as net revenue should carry a single calculation and a single valid join path, instead of being re-derived in every query. The following is an illustrative definition, not Snowflake syntax and not a tested artefact:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
metric: net_revenue
  grain: order_items
  expression: SUM(line_amount) - SUM(discount_amount) - SUM(refund_amount)
  filter: order_status NOT IN ('cancelled', 'test')
  date_rule: order_placed_at

metric: average_order_value
  grain: orders
  expression: SUM(order_total) / COUNT(DISTINCT order_id)
  filter: order_status NOT IN ('cancelled', 'test')
  date_rule: order_placed_at

Notice that each metric names the grain it is computed at. That is what prevents the 1,200-instead-of-100 failure from earlier. The date rule is stated rather than left for the consumer to guess.

Write descriptions as operational context

Snowflake’s modeling guidance states: “Descriptions are the single most important element for accuracy.” That statement comes from Snowflake Documentation, “Best practices for modeling semantic views,” accessed 2026-10-07. Use descriptions to explain what a generic column name cannot:

  • Proprietary terms and legacy names, such as a column called acct_cd that means the billing account
  • Units and currency, including whether amounts are gross or net of tax
  • Time zones and fiscal calendars
  • Business rules that change over time, with the period they applied to

Decide between one semantic view and several

Choose the number of views by comparing the questions and the users. Snowflake’s current guidance says to focus each view on one business topic or use case. A larger view can be appropriate when a single domain has densely connected tables. Split the model when domains or user groups are distinct and do not need to join.

Criterion Lean toward one view Lean toward several views
Business domain One domain Several distinct domains
Join density Tables join often and densely Tables rarely need to join
User groups Shared audience Different teams with different access
Cross-domain questions Common and important Rare
Context size Stays well within the model’s context budget Would exceed it
Evaluation results Questions answer correctly with one view Questions answer correctly only when scoped

Avoid two blanket rules: one view per table, and one view for everything. A view is useful when it captures the concepts and joins its questions need. Adding more metadata does not automatically improve results. Snowflake’s documentation gives a guideline of roughly 100,000 tokens for semantic-view size, and describes it as a guideline whose risk depends on the context window, instructions and conversation history.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What Snowflake currently documents

  • Semantic views are schema-level objects that define business concepts, metrics, entities and relationships. Snowflake’s documentation positions them as the recommended approach for new implementations, and distinguishes them from legacy semantic-model YAML, which is kept for backward compatibility.
  • Standard SQL clauses for querying semantic views became generally available on March 2, 2026, according to Snowflake release notes. Feature status changes, so confirm the current status in the release notes before relying on it.
  • Materialization of selected dimensions and metrics can improve performance, but the Snowflake documentation accessed 2026-10-07 labels it Preview. It also states that queries from Cortex Analyst, Cortex Agents and Snowflake CoWork that execute physical SQL directly against underlying tables do not benefit from these semantic-view materializations. Materialization therefore does not speed up every consumer of a semantic view.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Test meaning with questions before measuring cost

An evaluation set turns the model’s claims into checks you can run. Keep semantic correctness and execution cost as separate tests, because a query can be correct and slow, or fast and wrong.

  1. Write representative questions. Snowflake suggests about 10 representative benchmark questions as an initial evaluation set. That is vendor guidance, not a statistically sufficient sample. Typical question shapes include “Revenue by country,” “Average order value by month” and “Top 10 products.” These are illustrative examples, not evidence of user demand.
  2. Write gold SQL for each question. Validate the gold SQL against an agreed answer, reviewed by someone who knows the business rule.
  3. Generate SQL from the semantic view for each question, and compare the result set to the gold result, not just the query text.
  4. Classify each failure as wrong grain, wrong date rule, wrong join or cardinality, missing filter, undefined metric, or a missing description.
  5. Profile correct queries separately. Inspect the generated SQL with EXPLAIN or Query Profile. Optimise scans, joins, aggregation and materialization, then rerun the semantic checks after every change.

Each question should be answerable from the view alone. If a question can only be answered by a person who knows an unwritten rule, the rule belongs in a description or a metric definition.

Close the loop with real usage

A semantic view is never finished. Real questions reveal what the model left out, and each gap has a specific fix:

  • A wrong answer caused by an ambiguous column name is fixed with a description.
  • A metric that different people compute differently is fixed by defining it once.
  • A repeated correction such as “exclude test accounts” is fixed by adding a filter.
  • A question the model handles poorly is fixed by adding a verified example and its gold SQL.

After each revision, rerun the full set of regression questions, not only the ones that failed. Changes that fix one question often break another, and the regression run is the only way to see that.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the evidence does and does not establish

The grain, descriptions and evaluation practices above follow from how joins and aggregates behave, and from Snowflake’s documented guidance. What the evidence does not establish is a measured accuracy gain from semantic views. This article did not locate a primary-source study showing that semantic views cause better text-to-SQL accuracy, and it does not restate benchmark counts from the Spider or related papers. The SQL examples are illustrative and have not been executed. Treat any accuracy improvement in your own environment as something to measure with your own gold questions.

Snowflake’s semantic-view features are described here as of its documentation accessed 2026-10-07. Check the Snowflake documentation and release notes for current availability before designing around a Preview feature.

“

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.