The Open-Source OSI Playground for MetricFlow
Validate MetricFlow YAML against the Open Semantic Interchange spec, convert it to OSI in one click, and diff the two formats side-by-side. Runs entirely in your browser — no upload, no signup.
osi_version: 0.2.0.dev0
entities:
- name: orders
description: Fact table of customer orders
table: fct_orders
join_keys:
- name: order_id
type: primary
- name: customer_id
type: foreign
dimensions:
- name: order_date
type: time
granularity: day
- name: status
type: categorical
metrics:
- name: order_total
type: sum
expr: amount_usd
description: Gross order value in USD
- name: order_count
type: count
expr: order_id
- name: revenue
type: simple
description: Total revenue across all orders
What Is the Open Semantic Interchange?
OSI is a vendor-neutral YAML specification for semantic-layer metadata — a shared way for warehouses, BI tools and AI agents to talk about the same metric without redefining it in every product.
Launched in 2025 by Snowflake, dbt Labs, Salesforce, ThoughtSpot and other members of the modern data stack, OSI standardizes how entities, dimensions, metrics and join keys are described. Once a metric like revenue is defined in OSI, Cortex, Cube, Looker, AtScale and Datus can all read the same source of truth.
The current draft is v0.2.0.dev0. It targets an eventual 1.0 alongside production adoption in Snowflake Cortex and dbt semantic-layer exports.
MetricFlow → OSI Field Mapping
How every MetricFlow construct is translated into the OSI core schema. The Converter above uses exactly this table — nothing hidden. See the full 8-product mapping in the OSI Field Mapping reference.
| MetricFlow | OSI | Notes |
|---|---|---|
semantic_models[] | entities[] | One MetricFlow semantic_model becomes one OSI entity — same name, same description. |
model: ref('fct_orders') | table: fct_orders | The dbt ref() wrapper is stripped; the raw table name is used as the OSI table binding. |
entities[] | join_keys[] | primary / foreign / natural key semantics are preserved verbatim. |
dimensions[] | dimensions[] | type is normalized to categorical / time / numeric; time_granularity moves to granularity. |
measures[] | metrics[] (type = agg) | MetricFlow measures become OSI metrics; agg becomes the metric type (sum, count, average…). |
metrics[] (top-level) | metrics[] (on entity) | simple / ratio / cumulative / derived types survive; the referenced measure resolves onto its owning entity. |
Want every product side-by-side? Read the OSI Field Mapping reference — MetricFlow, Cube, LookML, AtScale, Snowflake, GoodData, Power BI and Databricks across six layers.
How to Convert MetricFlow to OSI
Three steps, browser only — no CLI to install, no key to paste.
Paste your MetricFlow YAML
Drop your semantic_models file into the input on the left. The Playground parses locally — nothing leaves your browser.
Convert to OSI
Open the Converter tab, click Download, and you have an OSI-compatible .yml file ready to hand to any OSI-aware tool.
Diff and validate
Use the Diff tab to see exactly what changed, then the Validator to confirm the output matches OSI v0.2 before you commit it.
Why an Open Semantic Standard Matters
Four concrete wins your data team gets the day a metric definition stops living inside a single vendor's YAML.
One definition, every tool
AI agents that don't hallucinate metrics
Zero-lock migration path
Governance stays where it belongs
OSI vs MetricFlow vs Cube
Interchange formats, engines and platforms solve different problems. Here is where each one fits.
| Dimension | OSI | MetricFlow | Cube |
|---|---|---|---|
| Scope | Interchange format | Semantic layer + engine | Semantic layer + engine + API |
| Runs queries | No — spec only | Yes (via dbt SQL) | Yes (via Cube API) |
| Vendor | Neutral (Snowflake · dbt · Salesforce · …) | dbt Labs | Cube Dev |
| Primary consumers | BI + AI tools that share a definition | dbt projects + MetricFlow-aware tools | BI dashboards, embedded analytics, LLM apps |
| License | Apache 2.0 | Apache 2.0 | Apache 2.0 |
| Maturity | Draft v0.2 (2026) | GA | GA |
Frequently asked questions
What OSI is, how the converter works, whether your YAML stays local, and how Datus uses OSI internally.
What is the Open Semantic Interchange (OSI)?
The Open Semantic Interchange is a vendor-neutral YAML specification for describing metrics, dimensions, and entities in a semantic layer. Backed by Snowflake, dbt Labs, Salesforce and others, OSI lets you define a metric once and query it from Snowflake Cortex, Cube, Looker, AtScale, ThoughtSpot and more without redefining 'Revenue' in every tool.
How do I convert MetricFlow YAML to OSI?
Paste your MetricFlow YAML into the Converter tab above. The Datus OSI Playground runs entirely in your browser: it parses your semantic_models, measures and dimensions, maps them to OSI entities, metrics and dimensions, and gives you a downloadable .yaml file plus a list of any fields that were dropped in translation.
Is my YAML sent to a server?
No. The Validator, Converter and Diff all run 100% in your browser using js-yaml. Your semantic definitions never leave your machine — there is no upload, no sign-up, and no logging. You can verify this in your browser's DevTools Network tab.
Which OSI version does the Playground validate against?
The Playground currently validates against OSI v0.2.0.dev0, the working draft of the core metadata specification. The OSI spec is still evolving toward a stable 1.0, so we track the upstream schema and re-publish the Playground when the spec moves. The active version is stamped at the top of every Validator result.
What is the difference between OSI and MetricFlow?
MetricFlow is dbt Labs' semantic layer YAML format — it's tightly integrated with the dbt project and generates SQL through the MetricFlow engine. OSI is a vendor-neutral interchange format: it doesn't run queries itself, it standardizes how metric and dimension definitions are shared across tools. In practice, teams author metrics in MetricFlow or Cube and export to OSI so downstream BI and AI tools can consume them without vendor lock-in.
Does the Converter support every MetricFlow feature?
The MVP covers the most common surface: semantic_models to entities, measures to metrics, dimensions to dimensions, entities to join_keys, and top-level metrics whose type_params.measure lives on a converted model. Advanced features (saved queries, cumulative metrics with grain-to-date, complex ratio metrics) are on the roadmap; any fields dropped in conversion are surfaced explicitly in the result panel so you never lose them silently.
How does Datus use OSI internally?
Datus is a data engineering agent that grounds every SQL query, pipeline and dashboard answer in your semantic layer. We treat OSI as the neutral wire format between Datus and whichever semantic layer you already run — dbt MetricFlow, Cube, Looker LookML or a home-grown YAML store — so the agent stays accurate as your stack changes. See our Features page for how the context engine reads OSI.
Is the OSI Playground open source?
The upstream OSI specification is Apache 2.0 (github.com/open-semantic-interchange/OSI). The Datus Playground is a free hosted tool built by the Datus team — the Datus data engineering agent itself is also Apache 2.0 and you can self-host the whole stack, semantic-layer support included.
Let a data engineering agent read your OSI.
Datus grounds every SQL query, pipeline and dashboard answer in your semantic layer — OSI, MetricFlow, Cube or LookML, take your pick.