Sharing metadata between Omni and dbt (description, exposures, accepted_values, and more)

If you’ve spent time building out metadata in your dbt environment, it can be brought into Omni automatically and be helpful for end users. For example, field and table descriptions will automatically show up in the UI as users query data, and they’ll also be used by our AI when answering natural language questions.

In addition, you can push valuable metadata from Omni back down to dbt to keep them in sync. For example, as you build out Omni workbooks and dashboards, Omni can help you generate exposures to add to dbt and link to dependencies for each model.

Here’s a comprehensive list of the metadata that can currently be shared between Omni and dbt:

  • Field descriptions and table descriptions are automatically pulled in from dbt and surfaced to end users. Descriptions added in Omni can also be pushed down to dbt.

  • Exposures can automatically be generated in Omni and pushed down to dbt, directly linking to dbt models to dependent Omni content. (You can also check out this guide on creating exposures from Omni via API.)

  • accepted_values, a dbt data_tests parameter that supplies a list of possible values, are pulled into Omni’s all_values parameter. This is particularly useful for AI. For example, if Omni’s AI knows that your Country field only accepts “USA” and “UK”, then when someone asks to filter to “US data only”, it can match “US” to the value “USA”.

  • Primary keys and relationships can automatically be generated in Omni based on dbt constraints, so you don’t need to manually define them again.

  • Omni’s dbt IDE also gives you read-only access to the files in your dbt schema, reducing the context-switching required when developing in Omni.

Here’s a quick demo showing you how these pieces come together: