{"id":7034283,"date":"2026-08-08T22:45:13","date_gmt":"2026-08-08T22:45:13","guid":{"rendered":"https:\/\/peraltafinancing.com\/analytics\/deploying-semantic-views-on-snowflake\/"},"modified":"2026-08-08T22:45:13","modified_gmt":"2026-08-08T22:45:13","slug":"deploying-semantic-views-on-snowflake","status":"publish","type":"post","link":"https:\/\/fivemor.com\/?p=7034283","title":{"rendered":"Deploying Semantic Views on Snowflake"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"article-start\">\n<p>This year, many data teams have added AI agents to their roadmaps. The excitement is real: an agent that turns a two-day analysis into a two-minute conversation can change how analysts and business teams work together.<\/p>\n<p>But agents are only as reliable as the data foundation beneath them. Point them at raw tables or outdated metadata, and they may sound convincing while <strong>being wrong<\/strong>. This article outlines a practical framework for generating and deploying governed semantic views on Snowflake.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-why-agent-quality-breaks-down\"><strong>Why Agent Quality Breaks Down<\/strong><\/h2>\n<p>Three failure patterns show up repeatedly once agents move from demo to production:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Governance gets traded for speed.<\/strong> Teams under pressure to ship skip questions about data integrity and access control until an agent is already answering questions for the business.<\/li>\n<li><strong>Duplication proliferates.<\/strong> Without a shared process, different teams build overlapping agents that answer the same question in subtly different \u2013 and inconsistent \u2013 ways.<\/li>\n<li><strong>Answers are non-deterministic.<\/strong> The same question, asked twice, returns two different numbers. That\u2019s worse than being reliably wrong, because nobody knows when to distrust the answer.<\/li>\n<\/ul>\n<p>All three trace back to one root cause: there\u2019s no standardized, <em>enforced<\/em> process governing how a semantic definition gets created, reviewed, versioned, and promoted. Tooling that helps you author semantic views faster doesn\u2019t solve this by itself \u2013 speed and governance are different axes, and an organization can have plenty of one and very little of the other.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-what-a-semantic-layer-actually-does\"><strong>What a Semantic Layer Actually Does<\/strong><\/h2>\n<p>Ask five teams \u201cwhat is the total number of active members in Q1 2026?\u201d without a shared semantic layer, and you may get five different numbers. Each team applies its own filters, joins its own tables, and defines \u201cactive\u201d differently \u2013 and an LLM asked the same question with no grounding will hallucinate a sixth answer that sounds just as confident as the other five.<\/p>\n<p>A semantic layer solves this by sitting between the raw warehouse and every consumer \u2013 dashboards, spreadsheets, and now AI agents \u2013 and answering three questions the same way, every time: which tables hold this data, what filters apply, and what\u2019s the aggregation logic and grain. Snowflake\u2019s own documentation frames this as addressing the mismatch between how business users describe data and how it\u2019s actually stored in database schemas \u2013 for example, defining \u201cnet revenue\u201d once, consistently, as <code>SUM(gross_revenue * (1 - discount))<\/code>, rather than leaving the calculation to be reinvented in every report.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-where-this-lives-in-snowflake\"><strong>Where This Lives in Snowflake<\/strong><\/h2>\n<p>In Snowflake, the semantic layer is implemented as a <strong>semantic view<\/strong>, a schema-level object stored directly in the database that defines business metrics and models entities and their relationships, which Cortex Analyst \u2013 Snowflake\u2019s text-to-SQL tool, can then query in natural language. Cortex Agent is the AI orchestrator that holds one or more semantic views, alongside search services and custom tools, and decides which resource answers a given question \u2013 the same architecture underpinning Snowflake CoWork(formerly Snowflake Intelligence).<\/p>\n<p>Here\u2019s what that specification looks like filled in with a real example. Below is a semantic view over a SaaS billing dataset \u2013 two logical tables (billing and customers), joined on customer ID, with three certified revenue metrics defined once:<\/p>\n<pre class=\"wp-block-code\"><code>name: SAAS_BILLING\ndescription: Combines customer records with subscription billing details\n  to support certified MRR, net MRR, and churned revenue metrics.\ntables:\n  - name: BILLING\n    base_table: { database: FINANCE, schema: ANALYTICS, table: FCT_SAAS_BILLING }\n    dimensions:\n      - name: BILLING_DATE\n        expr: BILLING_DATE\n        data_type: DATE\n      - name: PLAN_TYPE\n        expr: PLAN_TYPE\n        data_type: VARCHAR(20)\n    facts:\n      - name: MRR_AMOUNT\n        expr: MRR_AMOUNT\n        data_type: NUMBER(10,2)\n    metrics:\n      - name: TOTAL_MRR\n        expr: SUM(billing.MRR_AMOUNT)\n      - name: NET_MRR\n        expr: SUM(billing.MRR_AMOUNT) - SUM(billing.DISCOUNT_AMOUNT)\n      - name: CHURNED_REVENUE\n        expr: SUM(IFF(billing.IS_ACTIVE = FALSE, billing.MRR_AMOUNT, 0))\n    primary_key: { columns: [BILLING_ID] }\n  - name: CUSTOMERS\n    base_table: { database: FINANCE, schema: ANALYTICS, table: DIM_CUSTOMERS }\n    dimensions:\n      - name: COMPANY_NAME\n        expr: COMPANY_NAME\n        data_type: VARCHAR(100)\n      - name: INDUSTRY\n        expr: INDUSTRY\n        data_type: VARCHAR(50)\n    primary_key: { columns: [CUSTOMER_ID] }\nrelationships:\n  - name: CUSTOMER_BILLING\n    left_table: BILLING\n    right_table: CUSTOMERS\n    relationship_columns:\n      - { left_column: CUSTOMER_ID, right_column: CUSTOMER_ID }<\/code><\/pre>\n<p><em>(Trimmed for readability \u2013 the full generated file includes every column comment and access modifier. <\/em><a href=\"https:\/\/github.com\/rsandy94\/semantics_generator\/blob\/master\/semantic_view.yml\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><em><u>Repo<\/u><\/em><\/a><em> has the full semantic definition )<\/em><\/p>\n<p>What\u2019s not in question is that this object works. What <em>is<\/em> in question is: <em>how does a semantic view like this get created in the first place?<\/em><\/p>\n<h2 class=\"wp-block-heading\" id=\"h-the-two-governance-pillars-behind-every-certified-metric\"><strong>The Two Governance Pillars Behind Every Certified Metric<\/strong><\/h2>\n<p>Before the pipeline itself, it\u2019s worth being precise about the two governed inputs it depends on.<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>The Data Catalog<\/strong>: One authoritative source for business descriptions, data types, sensitivity tags (PII\/PHI), sample values, and certification status for every column and table. In this implementation that\u2019s <strong>Snowflake Horizon<\/strong> \u2013 tags are set at the column level or table level. The catalog contains the data type, description, synonyms, sample values etc., and a dynamic masking policy can restrict who ever sees a flagged column. A <code>certification_status=\"Certified\"<\/code> tag is the green light for th at column\u2019s metadata to be used in a semantic view at all.<\/li>\n<li><strong>The Metric Inventory<\/strong>: A single governed home for every metric formula, with a description, business owner, source table, domain, sensitivity classification, and critically a certification status. <strong>The operative rule: each metric is defined once and reused everywhere, and \u201conce\u201d is gated behind an actual sign-off from a domain owner or data steward<\/strong>. This is what is going to solve the problem that the same metric can be answered 6 different ways across teams.<\/li>\n<\/ol>\n<h2 class=\"wp-block-heading\" id=\"h-the-framework-a-governance-harness-for-semantic-view-generation\"><strong>The Framework: A Governance Harness for Semantic View Generation<\/strong><\/h2>\n<p>The core idea is simple to state: <strong>treat semantic view generation as a governed software release, not a one-off modeling exercise.<\/strong> In practice that means five components, each enforcing a rule that an informal process typically leaves optional. Before walking through each one, it helps to see the whole pipeline end to end, and then how that pipeline fits into the wider Snowflake architecture \u2013 the two diagrams below cover exactly that. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-governance-framework-flow-diagram\">Governance Framework Flow Diagram<\/h3>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-1-hev07m.webp\" alt=\"Semantic layer governance framework data flow\"\/><\/figure>\n<\/div>\n<p>Zooming out one level: this pipeline is only the build-time half of the picture. Figure 2 shows how it fits alongside the systems that actually consume its output \u2013 Cortex Analyst, Cortex Agents, Snowflake Cowork, and the BI tools discussed later in this article. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-system-architecture\">System architecture<\/h3>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-2-hev07m.webp\" alt=\"Governance framework for trustworthy Snowflake AI agents\"\/><\/figure>\n<\/div>\n<p>The full code for the below components breakdown is <u><a href=\"https:\/\/github.com\/rsandy94\/semantics_generator\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">here<\/a><\/u>.<\/p>\n<p>An orchestration script connects to Horizon and the metric inventory and pulls, for a given domain, only certified metric formulas and tagged schema. This step is deterministic \u2013 it retrieves already-approved facts, it doesn\u2019t infer anything:<\/p>\n<pre class=\"wp-block-code\"><code>cursor.execute(f\"\"\"\n    SELECT metric_name, description, expression, base_table\n    FROM GOVERNANCE_DB.SEMANTICS.METRIC_INVENTORY\n    WHERE certification_status=\"Certified\"\n      AND base_table IN ({table_list})\n\"\"\")\nmetrics = [\n    {\"metric_name\": r[0], \"description\": r[1], \"expression\": r[2], \"table\": r[3]}\n    for r in cursor.fetchall()\n]<\/code><\/pre>\n<p>The process pulls schema and tag context directly from Horizon tag references.<\/p>\n<pre class=\"wp-block-code\"><code>catalog_query = f\"\"\"\n    WITH physical_schema AS (\n        SELECT table_schema, table_name, column_name, data_type, comment AS column_description\n        FROM {database}.INFORMATION_SCHEMA.COLUMNS\n        WHERE table_schema IN ({schema_list}) AND table_name IN ({table_list})\n    ),\n    horizon_tags AS ( {real_time_tags_cte} )\n    SELECT p.table_name, p.column_name, p.data_type, p.column_description, t.tag_value AS privacy_tag\n    FROM physical_schema p\n    LEFT JOIN horizon_tags t\n        ON p.table_name = t.table_name AND p.column_name = t.column_name\n\"\"\"<\/code><\/pre>\n<p>This is the first structural difference from usage-inference approaches worth stating plainly: <strong>this pipeline only ever proposes definitions that trace back to a pre-approved source, rather than a definition surfaced because it was the most common pattern in someone\u2019s query history<\/strong>. Popularity is a useful discovery signal; it isn\u2019t the same claim as governance sign-off.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-component-2-constrained-generation\"><strong>Component 2 \u2013 Constrained Generation<\/strong><\/h3>\n<p>An LLM of choice (Claude, GPT, Qwen, GLM etc) converts the extracted context into a strictly formatted dbt model using the <code>dbt_semantic_view<\/code> package syntax. The key control is constraint: the system prompt fixes the output schema and clause order and requires every generated field to map to a catalog or inventory entry instead of the model\u2019s own judgment. A trimmed version of the actual system prompt used in this pipeline:<\/p>\n<pre class=\"wp-block-code\"><code>SYSTEM_PROMPT = \"\"\"You are an expert Data Engineer building dbt semantic\nmodels for Snowflake.\n\nYou will receive a JSON context payload with:\n  - metrics: certified metric definitions (metric_name, expression, table)\n  - catalog: physical columns per table (table, column, data_type,\n    description, tag)\n  - table_descriptions: [{ table, description }] \n    source table in Snowflake\n\nProduce ONE valid dbt model file using the Snowflake-Labs dbt_semantic_view\npackage. Output ONLY the raw file contents. No prose, no markdown fences,\nno preamble.\n\nRequired clauses, in this exact order, separated by newlines:\n\n  {{ config(materialized='semantic_view') }}\n\n  TABLES (\n    <alias> AS {{ source('<source_name>', '<table>') }}\n      [ PRIMARY KEY (<col\/>) ] [ COMMENT = '<description>' ]\n  )\n\n  RELATIONSHIPS (\n    <relationship_name> AS <fact_alias>(<fk_col>) REFERENCES <dim_alias>\n  )\n\n  FACTS (\n    <alias>.<name> AS <sql_expr> [ COMMENT = '...' ] [, ...]\n  )\n\n  DIMENSIONS (\n    <alias>.<name> AS <sql_expr> [ COMMENT = '...' ] [, ...]\n  )\n\n  METRICS (\n    <alias>.<name> AS <sql_expr> [ COMMENT = '...' ] [, ...]\n  )\n\n  COMMENT = '<derived semantic=\"\" view=\"\" description=\"\">'\n\nPII handling: any column whose `tag` contains 'PII' (case-insensitive) MUST\nbe excluded from FACTS, DIMENSIONS, and METRICS.\n\"\"\"\n\n\n\n<p>Because the extracted context includes the PII tag, the model automatically omits or masks flagged columns instead of making case-by-case judgments.<\/p>\n\n\n\n<p>Beyond PII filtering, two controls enforce governance:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Predictable output:<\/strong>\u00a0Restrict the model to a strict, non-conversational format so reviewers can verify the generated code consistently and efficiently.<\/li>\n\n\n\n<li><strong>Data Integrity<\/strong>: The model must only use the specific data provided in the input, which prevents it from \u201challucinating\u201d or inventing its own columns and formulas.<\/li>\n<\/ul>\n\n\n\n<p>By applying this system prompt to the catalog and metric context, the pipeline automatically generates the required semantic view dbt model, replacing manual coding with verified, automated output which is probably 95% accurate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-component-3-human-certification-gate\"><strong>Component 3 \u2013 Human Certification Gate<\/strong><\/h3>\n\n\n\n<p>However accurate the LLM\u2019s output usually is, production metrics can\u2019t tolerate even a small percentage of hallucinated logic. So the generated definition is never merged automatically \u2013 it\u2019s committed to a new branch and opened as a pull request against the semantic-layer dbt <a href=\"https:\/\/github.com\/rsandy94\/dbt_enterprise_semantics\" target=\"_blank\" rel=\"noreferrer noopener nofollow\"><u>repository<\/u><\/a>. The orchestrator function ties four smaller GitHub API calls together:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def open_pr_for_file(owner, repo, file_path, content, commit_message,\n                      pr_title, pr_body, branch, base=\"master\",\n                      token=\"\", draft=False) -&gt; str:\n    if not token:\n        raise ValueError(\"GITHUB_TOKEN is required\")\n    base_sha = get_default_branch_sha(owner, repo, token, base=base)\n    create_branch(owner, repo, base_sha, branch, token)\n    put_file(owner, repo, file_path, content, commit_message, branch, token)\n    return create_pr(owner, repo, pr_title, pr_body, branch, base,\n                      token, draft=draft)<\/code><\/pre>\n<p>Each of those four calls is a small, single-purpose wrapper around the GitHub REST API \u2013 deliberately kept simple so the review trail stays legible:<\/p>\n<pre class=\"wp-block-code\"><code># Create a new branch off the base commit\ndef create_branch(owner, repo, base_sha, new_branch, token) -&gt; None:\n    r = requests.post(\n        f\"{API}\/repos\/{owner}\/{repo}\/git\/refs\",\n        headers=_headers(token),\n        json={\"ref\": f\"refs\/heads\/{new_branch}\", \"sha\": base_sha},\n        timeout=30,\n    )\n    _check(r)\n\n# Look up the current file SHA, if it already exists on this branch\ndef get_file_sha(owner, repo, path, branch, token) -&gt; Optional[str]:\n    r = requests.get(\n        f\"{API}\/repos\/{owner}\/{repo}\/contents\/{path}\",\n        headers=_headers(token), params={\"ref\": branch}, timeout=30,\n    )\n    if r.status_code == 404:\n        return None\n    return _check(r).get(\"sha\")\n\n# Commit the generated semantic view file to that branch\ndef put_file(owner, repo, path, content, message, branch, token) -&gt; dict:\n    payload = {\n        \"message\": message,\n        \"content\": base64.b64encode(content.encode(\"utf-8\")).decode(\"ascii\"),\n        \"branch\": branch,\n    }\n    existing = get_file_sha(owner, repo, path, branch, token)\n    if existing:\n        payload[\"sha\"] = existing\n    r = requests.put(\n        f\"{API}\/repos\/{owner}\/{repo}\/contents\/{path}\",\n        headers=_headers(token), json=payload, timeout=60,\n    )\n    return _check(r)\n\n# Open the PR for the data steward to review\ndef create_pr(owner, repo, title, body, head, base, token,\n               draft=False) -&gt; str:\n    r = requests.post(\n        f\"{API}\/repos\/{owner}\/{repo}\/pulls\",\n        headers=_headers(token),\n        json={\"title\": title, \"body\": body, \"head\": head,\n              \"base\": base, \"draft\": draft},\n        timeout=30,\n    )\n    return _check(r)[\"html_url\"]<\/code><\/pre>\n<p>A domain-mapped data steward \u2013 the named owner from the metric inventory \u2013 reviews the diff against the certification rubric defined in the next section. This is a <strong>hard gate<\/strong>: the CI pipeline blocks deployment without an approving review from an authorized reviewer, enforced the same way a production codebase enforces required reviewers.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-component-4-ci-cd-lifecycle\"><strong>Component 4 \u2013 CI\/CD Lifecycle<\/strong><\/h3>\n<p>After approval and merge, Git versions the definition like any other code artifact, preserving history, promotion workflows, and rollback capability. This is what gives the organization something ad hoc semantic-view creation structurally cannot: an audit trail answering, for any metric on any date, exactly which commit produced it and who approved it.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-component-5-native-deployment\"><strong>Component 5 \u2013 Native Deployment<\/strong><\/h3>\n<p>Merging to the main branch triggers a GitHub Actions workflow that runs <code>dbt build<\/code>, compiling the certified model into a native Snowflake <code>SEMANTIC VIEW<\/code> object:<\/p>\n<pre class=\"wp-block-code\"><code>on:\n  push:\n    branches: [master]\n    paths: ['semantic_models\/models\/semantic_views\/**']\njobs:\n  deploy-dbt-models:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - uses: actions\/setup-python@v5\n        with: { python-version: '3.10' }\n      - run: pip install -r requirements.txt\n      - run: dbt deps\n      - run: dbt debug\n      - run: dbt build --select semantic_views<\/code><\/pre>\n<p>From this point forward, Cortex Analyst, Cortex Agents, and Snowflake CoWork query the deployed object exactly as they would one built any other way. One implementation note: Snowflake internally represents the semantic view as YAML. Teams can deploy it directly from a YAML specification, but dbt SQL enables the human-review and CI\/CD workflow described above.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-component-5b-an-optional-apache-ossie-formerly-osi-export\"><strong>Component 5b \u2013 An Optional Apache Ossie (formerly OSI) Export<\/strong><\/h3>\n<p>Worth designing for before you need it: emit the same certified artifact a second time in Apache Ossie format, alongside the Snowflake deployment. Ossie is the vendor-neutral, Apache 2.0 spec formerly called Open Semantic Interchange (OSI), renamed when it entered the Apache Incubator in July 2026. It describes datasets, metrics, dimensions, relationships, and context so tools and agents interpret them consistently.<\/p>\n<p>It fits the pipeline because Ossie\u2019s building blocks map almost directly onto what Components 1 through 3 already extract and certify. Adding it is a serialization step on top of governance work you\u2019ve already done, not a new governance burden.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-specifications\">Specifications<\/h3>\n<p>Below is a sneak peek (<a href=\"https:\/\/github.com\/rsandy94\/semantics_generator\/blob\/master\/semantic_osi.yml\">full spec here<\/a>), illustrative rather than part of the reference repo since nothing consumes it yet, built against the public\u00a0<code>spec.yaml<\/code>\u00a0schema and mapping the same certified\u00a0<code>SAAS_BILLING<\/code>\u00a0fields into\u00a0<code>datasets<\/code>\u00a0\/\u00a0<code>relationships<\/code>\u00a0\/\u00a0<code>metrics<\/code>:<\/p>\n<pre class=\"wp-block-code\"><code>version: 0.1.1\nsemantic_model:\n  - name: saas_billing\n    description: &gt;\n      Combines customer records with subscription billing details to\n      support certified MRR, net MRR, and churned revenue metrics.\n    ai_context: &gt;\n      Use this model to answer questions about MRR, revenue churn, and\n      customer billing. \"Active\" means IS_ACTIVE = TRUE on the billing record.\n    datasets:\n      - name: billing\n        source: FINANCE.ANALYTICS.FCT_SAAS_BILLING\n        primary_key:\n          - BILLING_ID\n        fields:\n          - name: billing_date\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: BILLING_DATE\n            dimension:\n              is_time: true\n          - name: plan_type\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: PLAN_TYPE\n          - name: is_active\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: IS_ACTIVE\n          - name: mrr_amount\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: MRR_AMOUNT\n            description: Monthly recurring revenue amount.\n      - name: customers\n        source: FINANCE.ANALYTICS.DIM_CUSTOMERS\n        primary_key:\n          - CUSTOMER_ID\n        fields:\n          - name: company_name\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: COMPANY_NAME\n          - name: industry\n            expression:\n              dialects:\n                - dialect: SNOWFLAKE\n                  expression: INDUSTRY\n    relationships:\n      - name: customer_billing\n        from: billing\n        to: customers\n        from_columns:\n          - CUSTOMER_ID\n        to_columns:\n          - CUSTOMER_ID\n    metrics:\n      - name: churned_revenue\n        expression:\n          dialects:\n            - dialect: SNOWFLAKE\n              expression: SUM(IFF(billing.is_active = FALSE, billing.mrr_amount, 0))\n        description: Revenue lost from canceled plans\n        ai_context: &gt;\n          Use this when the user asks about lost, canceled, or churned\n          revenue, not for questions about customer counts.<\/code><\/pre>\n<p>This export provides two main advantages:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Reduced conversion work, not magic portability: <\/strong>The <em>expression.dialects <\/em>structure lets a metric carry engine-specific expressions in a single common artifact, which cuts conversion effort for any consumer that implements the standard. It does not make the metric automatically executable everywhere \u2013 portability still depends on each consumer supporting the relevant dialect and semantic behavior<strong>.<\/strong><\/li>\n<li><strong>AI-facing context, not a governance store: <\/strong>The <em>ai_context <\/em>field is for AI guidance \u2013 synonyms, examples, and usage instructions that help an agent choose the right metric. Keep ownership, certification evidence, and approval history in your authoritative governance systems (catalog, metric inventory, PR records), or in clearly defined custom extensions \u2013 not in ai_context.<\/li>\n<\/ul>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Doesn\u2019t Snowflake already do this?<\/p>\n<\/blockquote>\n<\/blockquote>\n<\/blockquote>\n<p>No. Snowflake\u2019s tooling solves discovery. This framework solves certification.<\/p>\n<ul class=\"wp-block-list\">\n<li>Autopilot finds statistical consensus in query history. That tells you what people already do, not what\u2019s correct, and two teams can produce two conflicting \u201cconsensus\u201d definitions with no owner forced to reconcile them.<\/li>\n<li>Horizon Context helps agents find an existing semantic view. It doesn\u2019t tell you whether that view was ever reviewed, by whom, or against what version history.<\/li>\n<li>Cortex Sense ranks undocumented data by relevance, popularity, and freshness, like web search. That\u2019s a different trust model entirely.<\/li>\n<\/ul>\n<p>None of this is a knock on Snowflake\u2019s roadmap. For certified metrics, require a named approver and a versioned audit trail before release.<\/p>\n<p>A generation framework has limited value when organizations can use certified artifacts only within Snowflake AI surfaces.<\/p>\n<div style=\"overflow-x:auto;margin:1.5em 0;\">\n<table style=\"width:100%;border-collapse:collapse;font-size:15px;line-height:1.5;\">\n<thead>\n<tr style=\"background:#f5f5f5;\">\n<th style=\"padding:12px;border:1px solid #ddd;text-align:left;\">Tool<\/th>\n<th style=\"padding:12px;border:1px solid #ddd;text-align:left;\">Integration<\/th>\n<th style=\"padding:12px;border:1px solid #ddd;text-align:left;\">Status<\/th>\n<th style=\"padding:12px;border:1px solid #ddd;text-align:left;\">Metric reuse<\/th>\n<th style=\"padding:12px;border:1px solid #ddd;text-align:left;\">Key limitations<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>Power BI<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Power BI consuming a Snowflake semantic view directly<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Unsupported<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">No<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Power BI does not support non-native semantic models.<\/td>\n<\/tr>\n<tr style=\"background:#fafafa;\">\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>Power BI \/ Tableau (reverse)<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Snowflake ingests .pbit\/.pbix files via Semantic View Autopilot<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Public Preview<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Partial<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Works in the opposite direction; Power BI still cannot query a live Snowflake semantic view.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>Tableau (TDS export)<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Export a semantic view as a Tableau Data Source (.tds) from Snowsight<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Public Preview<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Yes<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Auto-assigned dimensions and measures may need manual adjustment.<\/td>\n<\/tr>\n<tr style=\"background:#fafafa;\">\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>Sigma<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Sigma consuming Snowflake semantic views<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Beta<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Partial<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Limitations around joins, unions, APIs, derived metrics, inherited semantics, and AI assistant awareness.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>Omni<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Native two-way integration with Snowflake semantic views<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Available<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Yes<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Some documented modeling and query edge cases remain.<\/td>\n<\/tr>\n<tr style=\"background:#fafafa;\">\n<td style=\"padding:12px;border:1px solid #ddd;\"><strong>AtScale (XMLA bridge)<\/strong><\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Expose Snowflake semantic views to Power BI and Excel via XMLA<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Private Preview (announced Jun 2, 2026)<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Yes<\/td>\n<td style=\"padding:12px;border:1px solid #ddd;\">Preview feature; confirm availability and production readiness before adoption.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Few takeaways:<\/p>\n<ul class=\"wp-block-list\">\n<li>Snowflake still does not support direct Power BI consumption of semantic views, although it can ingest Power BI assets into Autopilot and a third-party XMLA bridge is in private preview.<\/li>\n<li>Support remains uneven across platforms; Omni offers a relatively direct two-way integration, Tableau provides a preview TDS export that preserves metrics, and Sigma remains in beta with notable limitations.<\/li>\n<li>Where native support is absent, teams still need to duplicate some modeling work, which open standards such as Apache Ossie aim to reduce over time.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"h-a-certification-rubric-so-human-in-the-loop-isn-t-a-slogan\"><strong>A Certification Rubric, So \u201cHuman in the Loop\u201d Isn\u2019t a Slogan<\/strong><\/h2>\n<p>The effectiveness of your review process depends entirely on the quality of the checklist used. At a minimum, every human reviewer should verify these points:<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>Source tracking:<\/strong> Confirm that every data point clearly traces back to an official, pre-approved list or catalog.<\/li>\n<li><strong>Protect privacy:\u00a0<\/strong>Remove or restrict access to any column that contains sensitive personal or health information, and have a human verify that the security measure is in place.<\/li>\n<li><strong>Formula accuracy:<\/strong> Verify that the math and logic in the code exactly match the official approved versions, ensuring the generated code is precise rather than just a close estimate.<\/li>\n<li><strong>Clarify labels and naming:<\/strong>\u00a0Define all labels and terms clearly so the AI does not confuse different metrics or concepts.<\/li>\n<li><strong>Perform practical testing:<\/strong>\u00a0Run at least one real-world test for every major metric and verify that the code produces correct results on actual data before finalizing it.<\/li>\n<li><strong>Official approval:<\/strong> Obtain formal sign-off from the domain owners or data stewards, confirming that they agree with the final definitions.<\/li>\n<\/ol>\n<p>Make these requirements a mandatory code-approval checklist so human-in-the-loop review becomes an enforceable practice, not a buzzword.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-from-deployment-to-answer-cortex-analyst-and-agents\"><strong>From Deployment to Answer: Cortex Analyst and Agents<\/strong><\/h2>\n<p>Once the <code>SAAS_BILLING<\/code> semantic view is live, it can be opened directly in <strong>Cortex Analyst<\/strong> and queried in natural language. Cortex Analyst resolves\u00a0<code>TOTAL_MRR<\/code>, groups by\u00a0<code>PLAN_TYPE<\/code>, and generates SQL automatically without human-written queries or metric redefinition.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-3-hev07m.webp\" alt=\"Cortex Analyst interface with semantic view configuration\"\/><\/figure>\n<\/div>\n<p><strong>Cortex Analyst (Text-to-SQL)<\/strong><\/p>\n<p>From there, developers can build a Cortex Agent that uses this semantic view as one of its tools. They can attach multiple semantic views and provide orchestration instructions that specify when the agent should use each one.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-4-hev07m.webp\" alt=\"Finance agent tool configuration settings\"\/><\/figure>\n<\/div>\n<p><strong>Cortex Agent<\/strong><\/p>\n<p>Previewed inside <strong>Snowflake CoWork<\/strong> (Previewed inside Snowflake Cowork) the agent presents a conversational, chat-style experience,<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-5-hev07m.webp\" alt=\"Snowflake CoWork conversational AI interface\"\/><\/figure>\n<\/div>\n<p>The following image traces exactly what happens between the user typing that question and the answer appearing on screen:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/cdn.analyticsvidhya.com\/wp-content\/uploads\/2026\/07\/image-6-hev07m.webp\" alt=\"Runtime query flow\"\/><\/figure>\n<\/div>\n<p>This chain grounds every answer in certified metrics and column definitions that passed the Component 3 certification gate, not in model-generated logic. That is the purpose of the pipeline: before a question reaches Cortex Analyst in Step 4, reviewers have already defined, reviewed, and versioned the meaning of \u201cMRR\u201d long before any user asks a question.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n<p>Agent quality is fundamentally a governance problem. A semantic view is only as trustworthy as the process behind it, so organizations need certified-source extraction, constrained generation, human approval, and a complete CI\/CD audit trail before deployment.<\/p>\n<p>Treat that process as a standard in its own right, independent of semantic-view authoring speed. Adding optional Apache Ossie export future-proofs certified artifacts, while current BI-tool limitations show why portability still matters.<\/p>\n<p><strong>Read more:<\/strong> <a href=\"https:\/\/www.analyticsvidhya.com\/blog\/2025\/07\/snowflake-cortex-analyst\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unlocking Data Insights with Snowflake Cortex Analyst<\/a><\/p>\n<div class=\"border-top py-3 author-info my-4\">\n<p>Analytics Vidhya Content team<\/p>\n<\/p><\/div>\n<p><h4 class=\"fs-24 text-dark\">Login to continue reading and enjoy expert-curated content.<\/h4>\n<p>                        <button class=\"btn btn-primary mx-auto d-table\" data-bs-toggle=\"modal\" data-bs-target=\"#loginModal\" id=\"readMoreBtn\">Keep Reading for Free<\/button>\n                    <\/p>\n<p>                    <!-- Free Courses --><\/p>\n<p>                                  <!-- Right Side Bar Reading list  --><\/p>\n<p>    <!-- Quiz block --><\/p>\n<p>    <!-- Comment Module --><\/p>\n<p>    <!-- Write us --><\/p>\n<section class=\"common-style-py\" id=\"writeUs\">\n<div class=\"container-fluid\">\n<div class=\"background-dark-secondary p-5 rounded-3\">\n<div class=\"row aligen-items-center\">\n<div class=\"col-xl-6 col-md-12 col-sm-12\">\n              <a href=\"https:\/\/www.analyticsvidhya.com\/become-an-author\" class=\"text-decoration-none float-end\"><br \/>\n                <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.analyticsvidhya.com\/wp-content\/themes\/analytics-vidhya\/images\/Write-for-us.webp\" alt=\"imag\" width=\"500\" height=\"250\" class=\"img-fluid\"\/><br \/>\n              <\/a>\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<div class=\"modal login-modal shadow\" aria-hidden=\"true\" aria-labelledby=\"emailModalLabel\" id=\"emailModal\" data-bs-keyboard=\"false\" data-bs-backdrop=\"static\" tabindex=\"-1\">\n<div class=\"modal-dialog modal-dialog-centered\">\n<div class=\"modal-content background-dark-primary shadow-sm rounded-4 p-4\">\n<div class=\"modal-body p-0 pt-5\">\n<div class=\"d-flex\">\n                <svg data-bs-toggle=\"modal\" data-bs-target=\"#loginModal\" class=\"me-2 backBtn\" width=\"24\" height=\"24\" viewbox=\"0 0 24 24\" fill=\"none\">\n                    <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" stroke=\"white\" strokewidth=\"2\" strokelinecap=\"round\" strokelinejoin=\"round\"\/>\n                <\/svg><\/p>\n<h2 class=\"fs-20 text-white mb-4\">Enter email address to continue<\/h2>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<div class=\"modal login-modal shadow\" id=\"otpModal\" aria-labelledby=\"loginOtpModalLabel\" tabindex=\"-1\" data-bs-keyboard=\"false\" data-bs-backdrop=\"static\" aria-hidden=\"true\">\n<div class=\"modal-dialog modal-dialog-centered\">\n<div class=\"modal-content background-dark-primary shadow-sm rounded-4 p-4\">\n<div class=\"modal-body p-0 pt-5\">\n<p class=\"blue pointer \" id=\"resendOtpBtn\">Resend OTP<\/p>\n<p class=\"text-dark-tertiary d-none\">Resend OTP in <span class=\"blue\" id=\"resentOtpSecond\">45s<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<div class=\"modal fade\" id=\"imageOnlyModal\" tabindex=\"-1\">\n<div class=\"modal-dialog modal-dialog-centered\" style=\"max-width: 820px;\">\n<div class=\"modal-content bg-transparent border-0 position-relative\">\n<p>            <button type=\"button\" class=\"btn-close position-absolute top-0 end-0 m-2 bg-white\" data-bs-dismiss=\"modal\"\/><\/p>\n<p>            <a href=\"https:\/\/www.analyticsvidhya.com\/datahacksummit\/?utm_source=web_property&amp;utm_medium=desktop_popup&amp;utm_campaign=06-May-2026%7C%7CDHS&amp;utm_content=explore\" target=\"_blank\"><br \/>\n                <img decoding=\"async\" src=\"https:\/\/imgcdn.analyticsvidhya.com\/freecourses_cms\/Banner-DHS-26.jpg\" style=\"width: 100%; height: auto;\" class=\"rounded-3\" alt=\"Popup Banner\"\/><br \/>\n            <\/a>\n        <\/div>\n<\/p><\/div>\n<\/div>\n<div class=\"modal fade\" id=\"imageAiModal\" tabindex=\"-1\">\n<div class=\"modal-dialog modal-dialog-centered\" style=\"max-width: 820px;\">\n<div class=\"modal-content bg-transparent border-0 position-relative\">\n<p>            <!-- Close Button --><br \/>\n            <button type=\"button\" class=\"btn-close position-absolute top-0 end-0 m-2 bg-white\" data-bs-dismiss=\"modal\"\/><\/p>\n<p>            <!-- Clickable Banner --><br \/>\n            <a href=\"https:\/\/www.analyticsvidhya.com\/datahacksummit\/?utm_source=web_property&amp;utm_medium=desktop_popup&amp;utm_campaign=06-May-2026%7C%7CDHS&amp;utm_content=explore\" target=\"_blank\"><\/p>\n<p>                <img decoding=\"async\" src=\"https:\/\/imgcdn.analyticsvidhya.com\/freecourses_cms\/Banner-DHS-26.jpg\" style=\"width: 100%; height: auto;\" class=\"rounded-3\" alt=\"AI Popup Banner\"\/><br \/>\n            <\/a>\n        <\/div>\n<\/p><\/div>\n<\/div>\n<p><\/derived><\/sql_expr><\/name><\/alias><\/sql_expr><\/name><\/alias><\/sql_expr><\/name><\/alias><\/dim_alias><\/fk_col><\/fact_alias><\/relationship_name><\/description><\/table>\n<p><\/source_name><\/alias><\/code><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>This year, many data teams have added AI agents to their roadmaps. The excitement is real: an agent that turns a two-day analysis into a two-minute conversation can change how analysts and business teams work together. But agents are only as reliable as the data foundation beneath them. Point them at raw tables or outdated [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7034284,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12033],"tags":[33524,56348,7166,11199],"dealstore":[],"offerexpiration":[],"class_list":["post-7034283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","tag-deploying","tag-semantic","tag-snowflake","tag-views"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deploying Semantic Views on Snowflake - Som2ny Network<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fivemor.com\/?p=7034283\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deploying Semantic Views on Snowflake - Som2ny Network\" \/>\n<meta property=\"og:description\" content=\"This year, many data teams have added AI agents to their roadmaps. The excitement is real: an agent that turns a two-day analysis into a two-minute conversation can change how analysts and business teams work together. But agents are only as reliable as the data foundation beneath them. Point them at raw tables or outdated [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fivemor.com\/?p=7034283\" \/>\n<meta property=\"og:site_name\" content=\"Som2ny Network\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-08T22:45:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"872\" \/>\n\t<meta property=\"og:image:height\" content=\"470\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fivemor.com\/?p=7034283#article\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\"},\"headline\":\"Deploying Semantic Views on Snowflake\",\"datePublished\":\"2026-08-08T22:45:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283\"},\"wordCount\":2384,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp\",\"keywords\":[\"Deploying\",\"Semantic\",\"Snowflake\",\"Views\"],\"articleSection\":[\"Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fivemor.com\/?p=7034283#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fivemor.com\/?p=7034283\",\"url\":\"https:\/\/fivemor.com\/?p=7034283\",\"name\":\"Deploying Semantic Views on Snowflake - Som2ny Network\",\"isPartOf\":{\"@id\":\"https:\/\/fivemor.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp\",\"datePublished\":\"2026-08-08T22:45:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fivemor.com\/?p=7034283#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fivemor.com\/?p=7034283\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/?p=7034283#primaryimage\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp\",\"width\":872,\"height\":470},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fivemor.com\/?p=7034283#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fivemor.com\/?bp_activities=1\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deploying Semantic Views on Snowflake\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fivemor.com\/#website\",\"url\":\"https:\/\/fivemor.com\/\",\"name\":\"Som2ny Network\",\"description\":\"Daily Deals\",\"publisher\":{\"@id\":\"https:\/\/fivemor.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fivemor.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/fivemor.com\/#organization\",\"name\":\"Som2ny Network\",\"url\":\"https:\/\/fivemor.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"contentUrl\":\"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png\",\"width\":300,\"height\":86,\"caption\":\"Som2ny Network\"},\"image\":{\"@id\":\"https:\/\/fivemor.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fivemor.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/fivemor.com\"],\"url\":\"https:\/\/fivemor.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deploying Semantic Views on Snowflake - Som2ny Network","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fivemor.com\/?p=7034283","og_locale":"en_US","og_type":"article","og_title":"Deploying Semantic Views on Snowflake - Som2ny Network","og_description":"This year, many data teams have added AI agents to their roadmaps. The excitement is real: an agent that turns a two-day analysis into a two-minute conversation can change how analysts and business teams work together. But agents are only as reliable as the data foundation beneath them. Point them at raw tables or outdated [&hellip;]","og_url":"https:\/\/fivemor.com\/?p=7034283","og_site_name":"Som2ny Network","article_published_time":"2026-08-08T22:45:13+00:00","og_image":[{"width":872,"height":470,"url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp","type":"image\/webp"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"18 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fivemor.com\/?p=7034283#article","isPartOf":{"@id":"https:\/\/fivemor.com\/?p=7034283"},"author":{"name":"admin","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371"},"headline":"Deploying Semantic Views on Snowflake","datePublished":"2026-08-08T22:45:13+00:00","mainEntityOfPage":{"@id":"https:\/\/fivemor.com\/?p=7034283"},"wordCount":2384,"commentCount":0,"publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"image":{"@id":"https:\/\/fivemor.com\/?p=7034283#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp","keywords":["Deploying","Semantic","Snowflake","Views"],"articleSection":["Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fivemor.com\/?p=7034283#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fivemor.com\/?p=7034283","url":"https:\/\/fivemor.com\/?p=7034283","name":"Deploying Semantic Views on Snowflake - Som2ny Network","isPartOf":{"@id":"https:\/\/fivemor.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fivemor.com\/?p=7034283#primaryimage"},"image":{"@id":"https:\/\/fivemor.com\/?p=7034283#primaryimage"},"thumbnailUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp","datePublished":"2026-08-08T22:45:13+00:00","breadcrumb":{"@id":"https:\/\/fivemor.com\/?p=7034283#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fivemor.com\/?p=7034283"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/?p=7034283#primaryimage","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/08\/Ahh-here-we-go-again.webp.webp","width":872,"height":470},{"@type":"BreadcrumbList","@id":"https:\/\/fivemor.com\/?p=7034283#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fivemor.com\/?bp_activities=1"},{"@type":"ListItem","position":2,"name":"Deploying Semantic Views on Snowflake"}]},{"@type":"WebSite","@id":"https:\/\/fivemor.com\/#website","url":"https:\/\/fivemor.com\/","name":"Som2ny Network","description":"Daily Deals","publisher":{"@id":"https:\/\/fivemor.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fivemor.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/fivemor.com\/#organization","name":"Som2ny Network","url":"https:\/\/fivemor.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/","url":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","contentUrl":"https:\/\/fivemor.com\/wp-content\/uploads\/2026\/07\/4a0953c4-logo-300x86-1.png","width":300,"height":86,"caption":"Som2ny Network"},"image":{"@id":"https:\/\/fivemor.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/fivemor.com\/#\/schema\/person\/b85e3c3dc0e1daea076524dc8810c371","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fivemor.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/729ae85bf62b9917e93538db2f2688ca?s=96&r=g&default=https%3A%2F%2Ffivemor.com%2Fwp-content%2Fplugins%2Fbuddypress-first-letter-avatar%2Fimages%2Fdefault%2F96%2Flatin_a.png","caption":"admin"},"sameAs":["https:\/\/fivemor.com"],"url":"https:\/\/fivemor.com\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/7034283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7034283"}],"version-history":[{"count":0,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/posts\/7034283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=\/wp\/v2\/media\/7034284"}],"wp:attachment":[{"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7034283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7034283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7034283"},{"taxonomy":"dealstore","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fdealstore&post=7034283"},{"taxonomy":"offerexpiration","embeddable":true,"href":"https:\/\/fivemor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fofferexpiration&post=7034283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}