Skip to main content
A schema refresh imports the semantic views on your Snowflake connection. Each semantic view arrives in Omni as one topic. Its logical tables become views scoped to that topic, and its RELATIONSHIPS clause becomes the topic’s relationships.

Requirements

To sync semantic views, you’ll need:

Triggering a sync

To sync, run a schema refresh on the model associated with the Snowflake connection. Omni imports new semantic views and updates topics whose semantic view changed in Snowflake. See Schema refreshes to learn how to trigger one manually or on a schedule. If a semantic view is skipped, the schema refresh shows a warning. A field Omni can’t parse (or a field that references one) is skipped on its own — the rest of the semantic view still imports. See Troubleshooting for each warning and how to resolve it.

What Omni creates

One .topic file per semantic view:
  • semantic_view replaces base_view. The value is the fully qualified CATALOG.SCHEMA.NAME of the source. Because there is no fixed base view, Omni joins in only the views each query needs.
  • Views and relationships belong to the topic, not the model, so they stay scoped to the semantic view they came from.
  • Names are schema-qualified when needed. For a semantic view outside the connection’s default schema, Omni prefixes the topic and view names with the schema (sales__orders_users), so same-named semantic views in different schemas both import.

Which schemas Omni imports from

Omni imports a topic from every schema on the connection that contains a semantic view. To narrow that set, use included_schemas or ignored_schemas in the model file. The views in a semantic view’s topic read from the tables named in the semantic view’s definition. Those tables can be in several schemas, and Omni applies included_schemas and ignored_schemas to each table’s schema too. If your model file uses included_schemas, list the semantic view’s schema and every schema its tables use:
Model file
If a table’s schema isn’t included, or ignored_schemas lists it, the topic leaves out that table’s fields. The table’s view stays in the topic file but its fields don’t appear in the workbook field browser and queries can’t use them. The topic still shows fields from tables whose schemas are included. Including a schema also adds its other tables to the model as views. To hide the ones you don’t need, use ignored_views. This doesn’t affect the semantic view topic.

Troubleshooting

Before Omni imported semantic views as topics, it created a folder of view files for each semantic view, and you may have built topics on them by hand. Those views and topics keep working. Each schema refresh regenerates them alongside the semantic view topics, so dashboards and workbooks built on them are unaffected.Two name collisions can appear in the schema refresh warnings:
  • A topic from the previous version has the generated name — the existing topic is kept and the schema refresh warns — see Schema refresh warnings for skipped semantic views below. Delete it and run a schema refresh to import the semantic view as a topic.
  • A topic you wrote by hand has the generated name — the generated content merges into your file and validation reports that the topic sets both semantic_view and base_view / joins. Rename or delete your topic and run a schema refresh.
To retire the previous version’s views and topics for a schema, delete them (or drop the semantic views in Snowflake) and run a schema refresh.
The schema containing the semantic view is included in the model, but the schema of one or more tables behind it isn’t, or ignored_schemas lists it. The views for those tables stay in the topic file, but their fields don’t appear in the workbook field browser and queries can’t use them.Add the tables’ schemas to included_schemas or remove them from ignored_schemas.
When Omni skips a semantic view during a schema refresh, the warning summary names the schema (Skipped semantic view content in "<catalog>.<schema>") and the detail names the semantic view and the reason. A skipped semantic view creates no topic. If an earlier import created one, that topic stays in the model until a schema refresh that rebuilds the schema removes it.A single relationship can be skipped while the topic still imports (The topic was imported without this join.). A view left with no relationship to the rest of the topic gets a validation warning:
Query that view on its own, or add an equality relationship in Snowflake.
When a field’s SQL expression can’t be parsed, the schema refresh warning summary names the semantic view and how many fields it couldn’t import (Omni imported semantic view <NAME> without <N> field(s).).For each skipped field, Omni displays the name of the field and the reason why it was skipped (Skipped <TABLE.FIELD> on <NAME>: <reason>.). The rest of the semantic view still imports as a topic.
Two semantic views with the same name in different schemas share a label. Hover the Snowflake mark for the fully qualified CATALOG.SCHEMA.NAME.

Next steps