Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.
Outcome: find the definitions your project already owns, then choose whether
to query them or change them. A catalog that can be read is not necessarily a
backend that can execute queries.
Use the configuration and extras for that backend. Keep the existing format as
the source of truth; choosing Dex does not require converting it to another one.
Read the available metrics, dimensions, entities, and physical mappings. The
mapping to warehouse columns matters: it connects semantic queries to profiling
and PII checks.Ask your agent:
Use Dex to list the revenue metrics in this project's semantic layer.Explain their dimensions and physical sources before running a query.
To answer a metric question, use explore semantic query or
explore semantic values on a backend that supports it. Start with the names
returned by the catalog and the semantic query reference.To change definitions, ask the agent to prepare a plan using semantic define|update|plan for dbt semantic models, or the matching semantic ossie,
semantic slayer, or semantic cube command for native documents. Review the
plan and apply it through transform apply.
Hosted dbt Cloud semantic queries are outside Dex’s cost guard. Understand that
boundary before running them. Other backends have different query capabilities;
reading a native document does not authorize a hosted catalog or query request.
The Apache Ossie walkthrough takes a native
layer from local files through catalog inspection, exploration, a drift baseline,
and authoring. It also explains the cases where metric queries are refused and
how to ask a governed warehouse question instead.For exact schemas and validation limits, use the
semantic layer reference,
Ossie compatibility, or
Cube compatibility.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Exmergo","description":"Documentation for Exmergo, the AI stack for your data stack, and for its products, starting with Dex, the agent-native analytics engineering toolkit.","colors":{"primary":"#2563eb","light":"#51a2ff","dark":"#2563eb"},"logo":{"light":"https://mintcdn.com/exmergo/7yUsy7pYVRWvzRbF/logo/light.svg?fit=max\u0026auto=format\u0026n=7yUsy7pYVRWvzRbF\u0026q=85\u0026s=484e04619625d32856c4ba27596f387c","dark":"https://mintcdn.com/exmergo/7yUsy7pYVRWvzRbF/logo/dark.svg?fit=max\u0026auto=format\u0026n=7yUsy7pYVRWvzRbF\u0026q=85\u0026s=4162049c191c396c83f41ec5fc79d123","href":"https://docs.exmergo.com"},"favicon":"https://mintcdn.com/exmergo/7yUsy7pYVRWvzRbF/favicon.svg?fit=max\u0026auto=format\u0026n=7yUsy7pYVRWvzRbF\u0026q=85\u0026s=fbbdeeafb4caded2245beaec310075dd","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://www.exmergo.com/discord?ref=docs","label":"Discord"},{"href":"https://www.exmergo.com/dex/enterprise","label":"Dex Enterprise"}],"primary":{"type":"github","href":"https://github.com/exmergo"}},"footer":{"socials":{"github":"https://github.com/exmergo","x":"https://x.com/exmergo","linkedin":"https://www.linkedin.com/company/exmergo","discord":"https://www.exmergo.com/discord?ref=docs","website":"https://www.exmergo.com"}},"search":{"prompt":"Search the Exmergo docs"},"seo":{"metatags":{"canonical":"https://docs.exmergo.com","og:site_name":"Exmergo","twitter:site":"@exmergo"},"indexing":"navigable"},"fonts":{"family":"Geist"},"integrations":{"ga4":{"measurementId":"G-D0VN4G61JD"}},"errors":{"404":{"redirect":false,"title":"Page not found","description":"Search the docs, or start from the [home page](/)."}},"contextual":{"options":["copy","view","claude","chatgpt","perplexity","mcp","add-mcp","cursor","vscode"],"display":"header"},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/exmergo/7yUsy7pYVRWvzRbF/images/og-background.png?fit=max\u0026auto=format\u0026n=7yUsy7pYVRWvzRbF\u0026q=85\u0026s=ae0b1f3dc96ddddb7f0646c4e8a0d9e4","fonts":{"family":"Geist"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"exmergo","hasAudioNarration":false,"actualSubdomain":"exmergo","customDomains":["docs.exmergo.com"],"gitSource":{"type":"github","owner":"exmergo","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb185b1f0e0ab891ccdb06","collectionId":"39e2f24c-cccf-48bf-b94c-4802a6f56799","liveDeploymentHistoryId":"6aeb185b1f0e0ab891ccdb06","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aeb185b1f0e0ab891ccdb06","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Dex","count":42},{"language":"default","tag":"Reference","count":31},{"language":"default","tag":"Documentation","count":10},{"language":"default","tag":"CLI","count":9},{"language":"default","tag":"Connectors","count":8},{"language":"default","tag":"Get started","count":4},{"language":"default","tag":"Workflows","count":4},{"language":"default","tag":"Integration contracts","count":4},{"language":"default","tag":"Project and exploration","count":3},{"language":"default","tag":"Safety and spending","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"dex/guides/semantic-layer","slug":"/dex/guides/semantic-layer","pageMetadata":{"title":"Use a semantic layer","sidebarTitle":"Semantic layers","description":"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.","og:title":"Use a semantic layer · Exmergo Dex","twitter:title":"Use a semantic layer · Exmergo Dex","href":"/dex/guides/semantic-layer"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Outcome:`}),` find the definitions your project already owns, then choose whether\nto query them or change them. A catalog that can be read is not necessarily a\nbackend that can execute queries.`]}),`\n`,_jsx(Heading,{level:`2`,id:`1-identify-the-layer`,children:`1. Identify the layer`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Your project uses`}),_jsx(_components.th,{children:`Where definitions live`}),_jsx(_components.th,{children:`Read next`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`dbt semantic models`}),_jsx(_components.td,{children:`MetricFlow YAML in the dbt project`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/dex/semantic-layers/overview`,children:`Semantic layer reference`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`dbt Cloud Semantic Layer`}),_jsx(_components.td,{children:`Hosted catalog and query API`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/dex/semantic-layers/overview#hosted-backend-api-dbt-cloud-semantic-layer`,children:`Hosted backend`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Apache Ossie`}),_jsx(_components.td,{children:`Native YAML documents in the repository`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/dex/guides/ossie-semantic-layer`,children:`Ossie walkthrough`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`SLayer`}),_jsx(_components.td,{children:`Native model files in the repository`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/dex/semantic-layers/overview#slayer-models-vendor-slayer`,children:`SLayer support`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Cube`}),_jsx(_components.td,{children:`Cube YAML model files in the repository`}),_jsx(_components.td,{children:_jsx(_components.a,{href:`/dex/semantic-layers/cube`,children:`Cube compatibility`})})]})]})]}),`\n`,_jsx(_components.p,{children:`Use the configuration and extras for that backend. Keep the existing format as\nthe source of truth; choosing Dex does not require converting it to another one.`}),`\n`,_jsx(Heading,{level:`2`,id:`2-inspect-the-catalog-first`,children:`2. Inspect the catalog first`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`dex`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` explore`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` semantic`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Read the available metrics, dimensions, entities, and physical mappings. The\nmapping to warehouse columns matters: it connects semantic queries to profiling\nand PII checks.`}),`\n`,_jsx(_components.p,{children:`Ask your agent:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Use Dex to list the revenue metrics in this project's semantic layer.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Explain their dimensions and physical sources before running a query.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`3-query-or-author`,children:`3. Query or author`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`To answer a metric question`}),`, use `,_jsx(_components.code,{children:`explore semantic query`}),` or\n`,_jsx(_components.code,{children:`explore semantic values`}),` on a backend that supports it. Start with the names\nreturned by the catalog and the `,_jsx(_components.a,{href:`/dex/semantic-layers/overview`,children:`semantic query reference`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`To change definitions`}),`, ask the agent to prepare a plan using `,_jsx(_components.code,{children:`semantic define|update|plan`}),` for dbt semantic models, or the matching `,_jsx(_components.code,{children:`semantic ossie`}),`,\n`,_jsx(_components.code,{children:`semantic slayer`}),`, or `,_jsx(_components.code,{children:`semantic cube`}),` command for native documents. Review the\nplan and apply it through `,_jsx(_components.code,{children:`transform apply`}),`.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Hosted dbt Cloud semantic queries are outside Dex’s cost guard. Understand that\nboundary before running them. Other backends have different query capabilities;\nreading a native document does not authorize a hosted catalog or query request.`})}),`\n`,_jsx(Heading,{level:`2`,id:`a-complete-local-example`,children:`A complete local example`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/dex/guides/ossie-semantic-layer`,children:`Apache Ossie walkthrough`}),` takes a native\nlayer from local files through catalog inspection, exploration, a drift baseline,\nand authoring. It also explains the cases where metric queries are refused and\nhow to ask a governed warehouse question instead.`]}),`\n`,_jsxs(_components.p,{children:[`For exact schemas and validation limits, use the\n`,_jsx(_components.a,{href:`/dex/semantic-layers/overview`,children:`semantic layer reference`}),`,\n`,_jsx(_components.a,{href:`/dex/semantic-layers/ossie`,children:`Ossie compatibility`}),`, or\n`,_jsx(_components.a,{href:`/dex/semantic-layers/cube`,children:`Cube compatibility`}),`.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Use a semantic layer","sidebarTitle":"Semantic layers","description":"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.","og:title":"Use a semantic layer · Exmergo Dex","twitter:title":"Use a semantic layer · Exmergo Dex","href":"/dex/guides/semantic-layer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Identify the layer","slug":"1-identify-the-layer","depth":2,"children":[]},{"title":"2. Inspect the catalog first","slug":"2-inspect-the-catalog-first","depth":2,"children":[]},{"title":"3. Query or author","slug":"3-query-or-author","depth":2,"children":[]},{"title":"A complete local example","slug":"a-complete-local-example","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"exmergo","siteName":"Exmergo","title":"Use a semantic layer · Exmergo Dex","navMaps":{"firstHrefInVersion":{"v1.17":{"href":"/dex/guides/semantic-layer","matchLevel":0},"v1.16":{"href":"/dex/v1.16","matchLevel":4},"v1.15":{"href":"/dex/v1.15","matchLevel":4},"v1.14":{"href":"/dex/v1.14","matchLevel":4},"v1.13":{"href":"/dex/v1.13","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-11-01T01:30:09.078Z","originalFileLocation":"dex/guides/semantic-layer.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Exmergo\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Use a semantic layer · Exmergo Dex\">\u003cmeta data-mint-head property=\"og:description\" content=\"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Exmergo\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.exmergo.com/dex/guides/semantic-layer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://exmergo.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Use+a+semantic+layer\u0026amp;description=Find+the+metrics+your+project+defines%2C+choose+the+right+semantic+backend%2C+and+author+changes+through+reviewable+plans.+Check+query+support+before+running+them.\u0026amp;theme=ac1e0000fbe998be6401e9a4\u0026amp;signature=1cf0084a0f2fd0a38ba78a8ab0898a00e896beddbd1271c7547f492e8025d03d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Use a semantic layer · Exmergo Dex\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://exmergo.mintlify.app/_mintlify/api/og/v2?division=Workflows\u0026amp;title=Use+a+semantic+layer\u0026amp;description=Find+the+metrics+your+project+defines%2C+choose+the+right+semantic+backend%2C+and+author+changes+through+reviewable+plans.+Check+query+support+before+running+them.\u0026amp;theme=ac1e0000fbe998be6401e9a4\u0026amp;signature=1cf0084a0f2fd0a38ba78a8ab0898a00e896beddbd1271c7547f492e8025d03d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/exmergo/iJaPH5lvD3hW1PFT/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Exmergo\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563eb\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.exmergo.com/dex/guides/semantic-layer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/dex/guides/semantic-layer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.exmergo.com/#organization\",\"name\":\"Exmergo\",\"url\":\"https://docs.exmergo.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/exmergo/7yUsy7pYVRWvzRbF/logo/light.svg?fit=max\u0026auto=format\u0026n=7yUsy7pYVRWvzRbF\u0026q=85\u0026s=484e04619625d32856c4ba27596f387c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.exmergo.com#website\",\"name\":\"Exmergo\",\"url\":\"https://docs.exmergo.com\",\"publisher\":{\"@id\":\"https://docs.exmergo.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.exmergo.com/dex/guides/semantic-layer#webpage\",\"url\":\"https://docs.exmergo.com/dex/guides/semantic-layer\",\"name\":\"Use a semantic layer\",\"description\":\"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\",\"dateModified\":\"2026-11-01T01:30:09.078Z\",\"isPartOf\":{\"@id\":\"https://docs.exmergo.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.exmergo.com/dex/guides/semantic-layer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.exmergo.com/dex/guides/semantic-layer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Workflows\",\"item\":\"https://docs.exmergo.com/dex/guides/explore\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Use a semantic layer\",\"item\":\"https://docs.exmergo.com/dex/guides/semantic-layer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.exmergo.com/dex/guides/semantic-layer#article\",\"headline\":\"Use a semantic layer\",\"name\":\"Use a semantic layer\",\"description\":\"Find the metrics your project defines, choose the right semantic backend, and author changes through reviewable plans. Check query support before running them.\",\"url\":\"https://docs.exmergo.com/dex/guides/semantic-layer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.exmergo.com/dex/guides/semantic-layer#webpage\"},\"dateModified\":\"2026-11-01T01:30:09.078Z\",\"publisher\":{\"@id\":\"https://docs.exmergo.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.exmergo.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Exmergo\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Exmergo","nav":{"global":null,"products":[{"product":"Exmergo","description":"The AI stack for your data stack","pages":[{"title":"Exmergo","href":""}]},{"product":"Dex","description":"Agent-native analytics engineering","versions":[{"version":"v1.17","default":true,"tag":"Latest","tabs":[{"tab":"Documentation","groups":[{"group":"Get started","pages":[{"title":"Dex","sidebarTitle":"Introduction","href":"/dex"},{"title":"Your first warehouse map","sidebarTitle":"Quickstart","href":"/dex/quickstart"},{"title":"Install Dex","sidebarTitle":"Installation","href":"/dex/installation"},{"title":"Connect your data","sidebarTitle":"Connect your data","href":"/dex/connect"}]},{"group":"Workflows","pages":[{"title":"Explore a warehouse","sidebarTitle":"Explore","href":"/dex/guides/explore"},{"title":"Transform a dbt project","sidebarTitle":"Transform","href":"/dex/guides/transform"},{"title":"Maintain a project","sidebarTitle":"Maintain","description":"Check the project as it stands, capture a known-good baseline, and compare later changes against it. Review reconciliation plans and verify repairs on dev.","href":"/dex/guides/maintain"},{"title":"Use a semantic layer","sidebarTitle":"Semantic layers","href":"/dex/guides/semantic-layer"}]},{"group":"Tutorials and help","pages":[{"title":"Apache Ossie tutorial: a semantic layer end to end","sidebarTitle":"Ossie tutorial","description":"Walk one Apache Ossie semantic document through every dex command on a local DuckDB warehouse: configure, read, query, detect drift, and author changes.","href":"/dex/guides/ossie-semantic-layer"},{"title":"Understand a refusal or incomplete result","sidebarTitle":"Troubleshooting","href":"/dex/guides/troubleshooting"}]}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/dex/cli/overview"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/dex/changelog"}]}]},{"version":"v1.16","pages":[{"title":"v1.16","href":"/dex/v1.16"}]},{"version":"v1.15","pages":[{"title":"v1.15","href":"/dex/v1.15"}]},{"version":"v1.14","pages":[{"title":"v1.14","href":"/dex/v1.14"}]},{"version":"v1.13","pages":[{"title":"v1.13","href":"/dex/v1.13"}]}]}]},"basePath":"","title":"Use a semantic layer · Exmergo Dex","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}