Omni supports three methods for connecting to a GitHub-hosted dbt repository:
GitHub App authentication - Uses a GitHub app to perform authentication. Enables commit signing.
SSH authentication — Uses a deploy key to connect Omni to your repository. This is the traditional method and requires configuring a deploy key in your Git provider.
HTTPS token authentication — Uses an access token to authenticate. This method is simpler to set up because it doesn’t require deploy keys.
Set up Virtual Schemas. This isn’t required to use the dbt integration, but enabling Virtual Schemas before you start building in Omni avoids migrating later.
Connection test fails with GitHub App authentication
If the connection test fails when using GitHub App authentication, verify:
Installation ID is correct - The installation ID must be numeric and match the Omni GitHub App installation for your repository or organization. You can find this in your GitHub settings under Integrations > GitHub Apps > Configure.
GitHub App is installed - The Omni GitHub App must be installed and granted access to the repository. Check your GitHub organization or repository settings to confirm.
Repository URL is correct - The repository URL must be an HTTPS URL starting with https://github.com/.
GitHub App is configured in Omni - Your Omni instance must have the GitHub App configured. If the GitHub App option doesn’t appear in the authentication method dropdown, contact your Omni administrator.
If you continue to experience issues, try using SSH or HTTPS token authentication instead.
Was this page helpful?
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Omni Docs","colors":{"primary":"#FF5FA2","light":"#FF5FA2","dark":"#4D122C"},"logo":{"light":"https://mintcdn.com/omni-e7402367/m1fg0tfdkEcnYhky/images/logo/omni-black.png?fit=max\u0026auto=format\u0026n=m1fg0tfdkEcnYhky\u0026q=85\u0026s=85b81b605382b15b60eb75159899002a","dark":"https://mintcdn.com/omni-e7402367/m1fg0tfdkEcnYhky/images/logo/omni-white.png?fit=max\u0026auto=format\u0026n=m1fg0tfdkEcnYhky\u0026q=85\u0026s=18b529bed326b4f1be9d58ac65b9e002"},"favicon":"https://mintcdn.com/omni-e7402367/WTWdmWXPOMD5jOUY/favicon.png?fit=max\u0026auto=format\u0026n=WTWdmWXPOMD5jOUY\u0026q=85\u0026s=775ee4acbc06107599e3471e50161a2b","background":{"color":{"light":"#FCFCF7","dark":"#0e0b0e"}},"navbar":{"links":[{"href":"https://community.omni.co","label":"Community"}],"primary":{"type":"button","label":"Try Omni!","href":"https://omni.co/demo"}},"footer":{},"seo":{"metatags":{"canonical":"https://docs.omni.co"}},"fonts":{"heading":{"family":"Cal Sans","weight":400},"body":{"family":"IBM Plex Sans"}},"integrations":{"ga4":{"measurementId":"G-ZMG0QT2W9L"}},"banner":{"content":"Need help? Get answers from the docs with Omni's in-app AI! Log in to your Omni instance and open the [Omni Agent](/ai/chat) in the sidebar.","dismissible":true},"thumbnails":{"appearance":"dark","background":"https://mintcdn.com/omni-e7402367/J1q2UvTSjLHOwJ3G/images/og/og-background.png?fit=max\u0026auto=format\u0026n=J1q2UvTSjLHOwJ3G\u0026q=85\u0026s=63ad1c86bdbf4da4196959c391afb21f","fonts":{"family":"IBM Plex Sans"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"omni-e7402367","hasAudioNarration":false,"actualSubdomain":"omni-e7402367","customDomains":["docs.omni.co"],"gitSource":{"type":"github","owner":"exploreomni","repo":"mintlify-omni","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af33d50734ccd78509c8c4c","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Docs","count":507},{"language":"default","tag":"Developers","count":382},{"language":"default","tag":"Model data","count":304},{"language":"default","tag":"REST APIs","count":257},{"language":"default","tag":"Parameters","count":188},{"language":"default","tag":"Product updates","count":161},{"language":"default","tag":"Demos","count":157},{"language":"default","tag":"Admin","count":123},{"language":"default","tag":"Visualize \u0026 present","count":98},{"language":"default","tag":"Embedding","count":87}],"searchSettings":{"isFiltersEnabled":true,"maxResults":10,"fullPageSearch":true}},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":false}},"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":"img{border:1px solid;border-color:rgb(var(--gray-200))}.no-border{border:0px}.nav-logo{border:0px}#banner{color:#FCFCF7;font-weight:600;a {\n color: #FCFCF7;\n font-weight: 600;\n }}#topbar-cta-button{background-color:#FF5FA2;color:#FCFCF7!important;padding:0;border-radius:160px;text-decoration:none;font-weight:800;cursor:pointer;transition:background-color 0.2s ease, transform 0.1s ease}#topbar-cta-button span{background-color:transparent!important}#topbar-cta-button>a{padding:8px 14px!important}#topbar-cta-button *{color:#FCFCF7!important}#topbar-cta-button:hover{background-color:#FF5FA2;transform:translateY(-1px)}#topbar-cta-button:active{transform:translateY(0)}#topbar-cta-button svg{display:none!important}.navbar-link a{border-radius:160px!important}.dark .navbar-link a{background-color:rgb(255 255 255 / 0.1)!important}.dark .navbar-link a:hover{background-color:rgb(255 255 255 / 0.2)!important}[data-testid=\"rss-feed-button\"]{border-color:#FF5FA2!important;color:#FF5FA2!important;border-radius:160px!important;gap:6px;transition:background-color 0.2s ease, transform 0.1s ease}[data-testid=\"rss-feed-button\"]::after{content:\"Subscribe\";font-size:14px;font-weight:600}[data-testid=\"rss-feed-button\"] svg{stroke:#FF5FA2}[data-testid=\"rss-feed-button\"]:hover{background-color:rgba(255, 95, 162, 0.05)!important;transform:translateY(-1px)}.dark [data-testid=\"rss-feed-button\"]:hover{background-color:rgba(255, 95, 162, 0.1)!important}[class*=\"cursor-copy\"][class*=\"max-h-\"]{max-height:20px!important}:has(>.guide-header){position:relative;max-width:1100px;margin:0 auto;padding:24px 24px 72px calc(200px + 48px + 24px);color:rgb(var(--gray-700))}.dark :has(>.guide-header){color:rgb(var(--gray-400))}.guide-header{position:sticky;top:var(--scroll-mt, 9.5rem);z-index:20;background-color:#FCFCF7;padding:0px 0px 1px;margin-bottom:35px;box-shadow:0 -10rem 0 10rem #FCFCF7}.dark .guide-header{background-color:#0e0b0e;box-shadow:0 -10rem 0 10rem #0e0b0e}.guide-title{font-size:2.5rem;font-weight:700;color:rgb(var(--gray-900));margin:0;line-height:1.3}.dark .guide-title{color:rgb(var(--gray-50))}.guide-sidebar{position:absolute;left:24px;top:24px;bottom:0;width:200px}.guide-sidebar-content{position:sticky;top:calc(var(--scroll-mt, 9.5rem) + 10px)}.guide-sidebar-back{display:flex;align-items:center;gap:8px;color:rgb(var(--gray-500));text-decoration:none;font-size:14px;font-weight:500;margin-bottom:24px;transition:color 0.15s ease}.guide-sidebar-back:hover{color:rgb(var(--primary))}.guide-sidebar-section{margin-bottom:20px}.guide-sidebar-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:rgb(var(--gray-500));margin-bottom:6px}.guide-sidebar-category{display:flex;align-items:center;gap:6px;font-size:14px;color:rgb(var(--gray-700));text-transform:capitalize}.dark .guide-sidebar-category{color:rgb(var(--gray-300))}.guide-sidebar-date{font-size:14px;color:rgb(var(--gray-600))}.dark .guide-sidebar-date{color:rgb(var(--gray-400))}.guide-sidebar-links{list-style:none;padding:0;margin:0}.guide-sidebar-links li{margin-bottom:6px}.guide-sidebar-progress{display:flex;align-items:center;gap:12px}.guide-mascot{flex-shrink:0}.guide-mascot svg{display:block}.guide-sidebar-progress-text{font-size:14px;font-weight:600;color:rgb(var(--gray-600))}.dark .guide-sidebar-progress-text{color:rgb(var(--gray-400))}.guide-sidebar-links a{font-size:14px;color:rgb(var(--primary));text-decoration:none}:has(>.guide-header) .guide-sidebar a{border-bottom:none;font-weight:inherit}:has(>.guide-header) a.guide-sidebar-back{color:rgb(var(--gray-500));font-weight:500}:has(>.guide-header) a.guide-sidebar-back:hover{color:rgb(var(--primary))}:has(>.guide-header) .guide-sidebar-links a{color:rgb(var(--primary))}:has(>.guide-header) .guide-sidebar-links a:hover{text-decoration:underline}@media (max-width: 768px){:has(>.guide-header){padding:24px 24px 72px 24px}.guide-sidebar{position:static;width:100%;margin-bottom:24px}.guide-sidebar-content{position:static;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.guide-sidebar-back{width:100%;margin-bottom:4px}.guide-sidebar-section{margin-bottom:0}.guide-sidebar-section:has(.guide-sidebar-progress),.guide-sidebar-section:has(.guide-sidebar-links){display:none}.guide-sidebar-label{display:none}.guide-sidebar-category,.guide-sidebar-date{font-size:12px;padding:4px 10px;border-radius:4px;background-color:#f1f5f9;color:#1e191a}.dark .guide-sidebar-category,.dark .guide-sidebar-date{background-color:rgba(255, 255, 255, 0.03);color:rgb(250, 245, 247)}.guide-header{position:static;box-shadow:none}.guide-sticky-header{padding:12px 16px}.guide-progress-track{margin:-12px -16px 12px}.guide-sticky-title{font-size:1.5rem}}:has(>.guide-header) h1,:has(>.guide-header) h2,:has(>.guide-header) h3{color:rgb(var(--gray-900))}.dark :has(>.guide-header) h1,.dark :has(>.guide-header) h2,.dark :has(>.guide-header) h3{color:rgb(var(--gray-50))}:has(>.guide-header) h1{font-size:2.25rem;font-weight:700;margin:0 0 16px 0;line-height:1.2}:has(>.guide-header) h2{font-size:1.5rem;font-weight:600;margin:32px 0 16px 0;line-height:1.3}:has(>.guide-header) [data-component-part=\"step-title\"]{margin:0 0 16px 0}:has(>.guide-header) h3{font-size:1.25rem;font-weight:600;margin:24px 0 12px 0;line-height:1.4}:has(>.guide-header) p,:has(>.guide-header) [data-as=\"p\"]{display:block;margin:16px 0;line-height:1.7}:has(>.guide-header)>.guide-header+p,:has(>.guide-header)>.guide-header+[data-as=\"p\"]{margin-top:0}:has(>.guide-header) ul:not(.not-prose),:has(>.guide-header) ol:not(.not-prose){margin:16px 0;padding-left:24px}:has(>.guide-header) ul:not(.not-prose){list-style-type:disc}:has(>.guide-header) ol:not(.not-prose){list-style-type:decimal!important}:has(>.guide-header) :not(.not-prose)>li{margin-bottom:8px;line-height:1.6}:has(>.guide-header) .prose ul:not(.not-prose){list-style-type:none;padding-left:0}:has(>.guide-header) .prose :not(.not-prose)>li{margin-bottom:0}:has(>.guide-header) a{color:rgb(17, 24, 39);text-decoration:none;font-weight:600;border-bottom:1px solid rgb(var(--primary))}.dark :has(>.guide-header) a{color:rgb(var(--gray-50))}:has(>.guide-header) a:hover{border-bottom-width:2px}:has(>.guide-header) strong{font-weight:600;color:rgb(var(--gray-900))}.dark :has(>.guide-header) strong{color:rgb(var(--gray-50))}:has(>.guide-header) code{font-size:0.9em}:has(>.guide-header) table{width:100%;border-collapse:collapse;margin:16px 0}:has(>.guide-header) th{text-align:left;font-weight:600;padding:8px 16px 8px 0;border-bottom:1px solid rgb(var(--gray-200));color:rgb(var(--gray-900))}.dark :has(>.guide-header) th{border-bottom-color:rgb(var(--gray-700));color:rgb(var(--gray-50))}:has(>.guide-header) td{padding:12px 16px 12px 0;border-bottom:1px solid rgb(var(--gray-200));vertical-align:top}.dark :has(>.guide-header) td{border-bottom-color:rgb(var(--gray-700))}:has(>.guide-header) img{margin:16px 0;border-radius:8px}:has(>.guide-header) [data-component-part=\"card-title\"]{font-size:1rem!important;margin:4px 0 0 0!important}:has(>.guide-header) [data-component-part=\"card-content\"]{font-size:0.875rem!important;line-height:1.5!important}:has(>.guide-header) [data-component-part=\"card-content\"] [data-as=\"p\"]{font-size:0.875rem!important;margin:4px 0!important;line-height:1.5!important}.guides-container{max-width:1200px;margin:0 auto;padding:48px 24px}.guides-title{font-size:2.5rem;font-weight:700;color:#1e191a;margin-bottom:16px}.dark .guides-title{color:#e6e1e2}.guides-description{font-size:1.125rem;color:#1e191a;margin-bottom:32px}.dark .guides-description{color:#cbd5e1}.guides-layout{display:flex;gap:48px}.guides-sidebar{width:220px;flex-shrink:0}.guides-filters{position:sticky;top:100px;max-height:calc(100vh - 124px);overflow-y:auto;scrollbar-width:thin}.guides-filters::-webkit-scrollbar{width:6px}.guides-filters::-webkit-scrollbar-thumb{background:rgba(128, 128, 128, 0.35);border-radius:3px}.guides-filter-group{margin-bottom:24px}.guides-filter-label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.05em;color:#1e191a;margin-bottom:8px}.dark .guides-filter-label{color:#cbd5e1}.guides-filter-input{width:100%;padding:8px 12px;border-top-left-radius:9999px;border-top-right-radius:9999px;border-bottom-left-radius:9999px;border-bottom-right-radius:9999px;border-color:rgb(230, 225, 226);font-size:14px;box-sizing:border-box;background-color:rgba(17, 12, 14, 0.03);color:rgb(119, 114, 116)}.dark .guides-filter-input{background-color:rgba(255, 255, 255, 0.03);border-color:#334155;color:rgba(255, 255, 255, 0.5)}.guides-filter-input:focus{outline:none;border-color:#FF5FA2}.dark .guides-filter-input::placeholder{color:rgba(255, 255, 255, 0.5)}.guides-filter-button{display:block;width:100%;padding:8px 12px;margin-bottom:4px;border-radius:160px;border:1px solid #e2e8f0;background:transparent;font-size:14px;text-align:left;cursor:pointer;transition:all 0.15s ease;color:#334155}.dark .guides-filter-button{color:#cbd5e1;border-color:rgba(255, 255, 255, 0.1);border-style:solid;border-width:1.5px}.guides-filter-button:hover{background-color:#f8fafc}.dark .guides-filter-button:hover{background-color:#0e0b0e;border-color:#FF5FA2}.guides-filter-button.active{border-color:#FF5FA2;background-color:#fff0f6;color:#FF5FA2}.dark .guides-filter-button.active{background-color:rgba(255, 95, 162, 0.15)}.guides-clear-button{width:100%;padding:10px 12px;margin-bottom:16px;border:1px solid #e2e8f0;border-radius:160px;background:#f8fafc;color:#334155;font-size:14px;font-weight:500;cursor:pointer;transition:all 0.15s ease}.dark .guides-clear-button{background:#0e0b0e;color:#e2e8f0;border-color:rgba(255, 255, 255, 0.1);border-style:solid;border-width:1.5px}.guides-clear-button:hover{background:#f1f5f9;border-color:#cbd5e1}.dark .guides-clear-button:hover{background:#0e0b0e;border-color:#FF5FA2}.guides-content{flex:1;min-width:0}.guides-results-count{font-size:14px;color:#1e191a;margin-bottom:16px}.dark .guides-results-count{color:#cbd5e1}.guides-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));gap:16px}.guides-card{border:1px solid #e2e8f0;border-radius:16px;padding:20px;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:12px;transition:border-color 0.15s ease, box-shadow 0.15s ease;background-color:#FCFCF7}.dark .guides-card{border-color:rgba(255, 255, 255, 0.1);border-style:solid;border-width:1.5px;background-color:#0e0b0e}.guides-card:hover{border-color:#FF5FA2;box-shadow:0 2px 8px rgba(0, 0, 0, 0.08)}.dark .guides-card:hover{box-shadow:0 2px 8px rgba(0, 0, 0, 0.3)}.guides-card-icon{margin-bottom:4px}.guides-card-title{font-size:16px;font-weight:600;color:#1e191a;margin:0;line-height:1.3}.dark .guides-card-title{color:#FCFCF7}.guides-card-description{font-size:16px;color:#575254;margin:0;line-height:1.5;flex-grow:1}.dark .guides-card-description{color:#a6a1a2}.guides-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.guides-card-tag{font-size:12px;padding:2px 8px;border-radius:4px;background-color:#f1f5f9;color:#1e191a}.dark .guides-card-tag{background-color:rgba(255, 255, 255, 0.03);color:rgb(250, 245, 247)}.guides-no-results{text-align:center;padding:48px 24px;color:#1e191a}.dark .guides-no-results{color:#cbd5e1}@media (max-width: 768px){.guides-layout{flex-direction:column;gap:24px}.guides-sidebar{width:100%}.guides-filters{position:static;max-height:none;overflow-y:visible}.guides-filter-button{display:inline-block;width:auto;margin-right:8px}}.badge-color{background-color:#FF5FA2;color:#FCFCF7!important}.lib-page{--lib-muted: #575254;color:#1e191a}.dark .lib-page{--lib-muted: #a6a1a2;color:#e6e1e2}.lib-page a{color:#FF5FA2}.lib-card:hover{border-color:#FF5FA2!important}.lib-panel{background-color:#FCFCF7;color:#1e191a;height:100vh;height:100dvh;max-height:100dvh}.dark .lib-panel{background-color:#0e0b0e;color:#e6e1e2}.lib-logo-chip{display:inline-flex;align-items:center;justify-content:center;flex:none;overflow:hidden}.dark .lib-logo-chip{padding:3px 5px;border-radius:5px;background-color:#ffffff}.lib-logo-chip img{border:0;border-radius:0}.endpoint-table{table-layout:fixed}.endpoint-table th:first-child,.endpoint-table td:first-child{width:18rem;min-width:18rem;max-width:18rem}.endpoint-table th:last-child,.endpoint-table td:last-child{width:8rem;min-width:8rem;max-width:8rem}.icon{border:0px}.icons{background-color:#000000}.dark .icons{background-color:rgb(var(--gray-50))}.icon-position{display:inline;vertical-align:middle}.dbt-health-good{color:#178250}.dbt-health-warning{color:#FFBD14}.dbt-health-failure{color:#E42F2F}.dbt-health-unknown{color:#676F7E}.dark .dbt-health-good{color:#68B691}.dark .dbt-health-warning{color:#FDD97C}.dark .dbt-health-failure{color:#FF9F8A}.dark .dbt-health-unknown{color:#B7BDC8}.dbt-health-mark{color:#676F7E}.dark .dbt-health-mark{color:#B7BDC8}.dbt-health-ring{fill:#FCFCF7}.dark .dbt-health-ring{fill:#0e0b0e}[data-component-part=\"accordion-icon\"] svg{display:block!important}.side-by-side{display:flex;flex-direction:row-reverse;align-items:flex-start;gap:1.5rem;margin:1.5rem 0}.side-by-side-reverse{flex-direction:row}.side-by-side-divider{padding-bottom:1.5rem;border-bottom:1px solid rgb(var(--gray-200))}.dark .side-by-side-divider{border-bottom-color:rgb(var(--gray-700))}.side-by-side-media{flex:0 0 45%;display:flex;flex-direction:column;align-items:center;margin:0}.side-by-side-media img{width:auto;height:auto;max-width:100%;max-height:var(--side-by-side-height, 220px);margin:0}.side-by-side-caption{margin-top:0.75rem;padding:0 2rem 0.5rem;text-align:center;font-size:0.875rem;line-height:1.25rem;color:rgb(var(--gray-700))}.dark .side-by-side-caption{color:rgb(var(--gray-400))}.side-by-side-body{flex:1;min-width:0}.side-by-side-body p,.side-by-side-body [data-as=\"p\"]{display:block;margin:1rem 0}.side-by-side-body .side-by-side-title{margin:0 0 0.5rem;font-weight:600;color:rgb(var(--gray-900))}.dark .side-by-side-body .side-by-side-title{color:rgb(var(--gray-50))}.side-by-side-body>:first-child{margin-top:0}.side-by-side-body>:last-child{margin-bottom:0}@media (max-width: 768px){.side-by-side,.side-by-side-reverse{flex-direction:column;align-items:stretch}.side-by-side-media{flex:1 1 auto}}#page-title,:has(>.guide-header) h1,.guides-title{font-weight:400;line-height:1;letter-spacing:0;text-wrap:pretty}#page-title{font-size:2rem}@media (min-width: 40rem){#page-title{font-size:2.625rem}}h2,h3,h4,h5,h6{font-family:var(--font-family-body-custom)}.mdx-content :is(h2,h3,h4,h5,h6):not([data-component-part]):not(.not-prose){font-weight:500;line-height:1.15;letter-spacing:0;text-wrap:pretty}.mdx-content h2:not([data-component-part]):not(.not-prose){font-size:1.5rem}"}],"page":{"pagePath":"integrations/dbt/setup/github","slug":"/integrations/dbt/setup/github","pageMetadata":{"title":"Connecting a GitHub dbt repository to Omni","sidebarTitle":"GitHub","description":"Connect your GitHub dbt repository to Omni.","keywords":["dbt","dbt github","github","dbt git","setup dbt","connect dbt","dbt integration","https authentication","access token","deploy token"],"href":"/integrations/dbt/setup/github"},"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: \"Connect your GitHub dbt repository to Omni.\"\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];const keyInstructions_0=`Copy the public key from the Omni dbt settings tab and paste it into this field`;const writeAccess_0=`Check this box if you want to push changes made in Omni to the repository`;const type_2=`HTTPS`;const type_1=`SSH`;const type_0=`HTTPS`;function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Frame,Heading,Note,OptimizedImage,Step,Steps,View,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!View)_missingMdxReference(`View`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Omni supports three methods for connecting to a GitHub-hosted dbt repository:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`GitHub App authentication`}),` - Uses a GitHub app to perform authentication. Enables commit signing.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`SSH authentication`}),` — Uses a deploy key to connect Omni to your repository. This is the traditional method and requires configuring a deploy key in your Git provider.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`HTTPS token authentication`}),` — Uses an access token to authenticate. This method is simpler to set up because it doesn’t require deploy keys.`]}),`\n`]}),`\n`,_jsxs(View,{title:`Select authentication method`,id:`select-authentication-method`,children:[_jsx(Heading,{level:`2`,id:`select-an-authentication-method`,children:`Select an authentication method`}),_jsxs(Note,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`To view instructions for your authentication method`}),`, select it from the `,_jsx(_components.strong,{children:`dropdown menu`}),` on the right side of the page, above the table of contents.`]}),_jsx(Frame,{caption:`Select your authentication method from the dropdown to view setup instructions`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=e95edc19fad7856990cb7b855fa72e2c`,alt:`Authentication method selection menu on right side of this page`,\"data-og-width\":`278`,width:`278`,\"data-og-height\":`170`,height:`170`,\"data-path\":`integrations/images/git-select-auth-method.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=280\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=2a6a5f55ad0132ffd8d14c51630bc5d9 280w, https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=560\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=bf104e69d88ccc8537c19e2d7d34ff43 560w, https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=840\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=12d2bd3afdc1de0be95946995d0ab111 840w, https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=1100\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=23289ed10402a6c4f5f6b23b99b02b30 1100w, https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=1650\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=f233e75fe0c9e57c0ae713c63d284df0 1650w, https://mintcdn.com/omni-e7402367/z4NfWcJoMfO93ijI/integrations/images/git-select-auth-method.png?w=2500\u0026fit=max\u0026auto=format\u0026n=z4NfWcJoMfO93ijI\u0026q=85\u0026s=5afedaaa4def2f73aa80c0ded755758f 2500w`})})]})]}),`\n`,_jsxs(View,{title:`GitHub App`,id:`github-app`,children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`GitHub App authentication is only available for `,_jsx(_components.code,{children:`github.com`}),` repositories. This option only appears if your Omni instance has the GitHub App configured. If you don’t see this option and want to use it, reach out to Omni support.`]})}),_jsx(Heading,{level:`2`,id:`requirements`,children:`Requirements`}),_jsx(_components.p,{children:`To follow the steps in this guide, you’ll need:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsxs(_components.strong,{children:[`An existing `,_jsx(_components.a,{href:`/connect-data/setup`,children:`database connection`}),` in Omni`]})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/administration/users/permissions`,children:_jsx(_components.strong,{children:`Connection Admin permissions`})}),` for the connection you want to connect to dbt`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`configure-github-app-authentication`,children:`Configure GitHub App authentication`}),_jsxs(Steps,{titleSize:`h3`,children:[_jsxs(Step,{title:`Retrieve the repository's HTTPS URL`,id:`retrieve-the-repositorys-https-url`,children:[_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`In your browser, navigate to the GitHub repository you want to connect to Omni.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`Code`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`In the modal that displays, locate the `,_jsx(_components.strong,{children:type_0}),` option.`]}),`\n`]}),_jsx(_components.p,{children:`Keep this page open - you’ll need it in the next step.`})]}),_jsxs(Step,{title:`Launch the Omni GitHub App installation flow`,id:`launch-the-omni-github-app-installation-flow`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In Omni, navigate to `,_jsx(_components.strong,{children:`Settings > Connections`}),`.`]}),`\n`,_jsx(_components.li,{children:`Click the connection you want to use.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`dbt`}),` tab.`]}),`\n`]}),_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`From the `,_jsx(_components.strong,{children:`Authentication Method`}),` dropdown, select `,_jsx(_components.strong,{children:`GitHub App`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`HTTPS URL`}),` field, copy and paste the repository’s HTTPS URL from Step 1.`]}),`\n`,_jsxs(_components.li,{children:[`Next to the `,_jsx(_components.strong,{children:`Installation ID`}),` field, click the `,_jsx(_components.strong,{children:`Install the Omni GitHub App`}),` link.`]}),`\n`]}),_jsx(_components.p,{children:`GitHub will open in another tab in your browser. Leave this page open and finish the app installation in the other tab.`})]}),_jsxs(Step,{title:`Install the Omni GitHub App`,id:`install-the-omni-github-app`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`In GitHub, select the repository you want to connect.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Complete the installation.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`After you complete the installation, retrieve the app’s `,_jsx(_components.strong,{children:`installation ID`}),` from the page URL:`]}),`\n`,_jsx(Frame,{caption:`The installation ID is the string of numbers after the final forward slash in the page URL. In this example, the ID is 149469922.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=0d8403c6f6a112915dbaaf8a5d00448c`,alt:`Highlighted app installation ID in the page URL`,\"data-og-width\":`1050`,width:`1050`,\"data-og-height\":`373`,height:`373`,\"data-path\":`integrations/images/github-app-installation-id.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=280\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=8448fbfc06d87e71722d19728d1eabd9 280w, https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=560\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=7f676b7e2be67c4c18adc7a5579a5387 560w, https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=840\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=2be607b9f59ca36ee56de23821968115 840w, https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=1100\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=326cb230f97f2ed9a5bce6e6b19583cb 1100w, https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=1650\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=50cef55372b9612f2dc100cc7e097273 1650w, https://mintcdn.com/omni-e7402367/FnnxljlPEokrSOpD/integrations/images/github-app-installation-id.png?w=2500\u0026fit=max\u0026auto=format\u0026n=FnnxljlPEokrSOpD\u0026q=85\u0026s=37e1b4908d01048a23d8414cd782029c 2500w`})}),`\n`]}),`\n`]}),_jsx(_components.p,{children:`The installation ID is the string of numbers after the last forward slash in the page URL.`})]}),_jsx(Step,{title:`Configure the Git settings in Omni`,id:`configure-the-git-settings-in-omni`,children:_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Navigate back to the Omni Git settings page.`}),`\n`,_jsxs(_components.li,{children:[`Finish configuring the integration’s settings:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Installation ID`}),` - Paste the installation ID you copied from GitHub in the previous step`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Committer name`}),` - Enter the display name to associate with `,_jsx(_components.a,{href:`#configure-commit-signing`,children:`signed commits`}),`. `,_jsx(_components.strong,{children:`You’ll configure commit signing in the next step.`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Committer email`}),` - Enter the verified email of the GitHub user to associate with `,_jsx(_components.a,{href:`#configure-commit-signing`,children:`signed commits`}),`. `,_jsx(_components.strong,{children:`You’ll configure commit signing in the next step.`})]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git Branch`}),` - Enter the name of the default branch for the repository. This is usually `,_jsx(_components.code,{children:`main`}),` or `,_jsx(_components.code,{children:`master`}),`.`,`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Avoid naming your branch `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),`. Omni creates temporary branches prefixed with `,_jsx(_components.code,{children:`omni/`}),` and `,_jsx(_components.code,{children:`omnianalytics/`}),` during internal operations like connection testing. A branch named `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),` in your repository will conflict with this and cause validation errors and connection test failures.`]})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Folder`}),` - If your repository contains multiple dbt projects, enter the path to the folder that contains the dbt project you want to connect.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable Virtual Schemas`}),` - Enables the use of virtual schemas, which require additional setup. See `,_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Working with dbt virtual schemas`}),` for instructions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable dbt Semantic Layer`}),` - Check this box to enable the `,_jsx(_components.a,{href:`/integrations/dbt/semantic-layer`,children:`dbt Semantic Layer integration`}),`. When enabled, Omni will use the dbt Semantic Layer to pull in metrics and dimensions defined in your dbt project.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-generate primary keys and relationships from dbt constraints`}),` - Check this box to allow Omni to generate primary keys and relationships from native dbt constraints.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dbt Version`}),` - When set to `,_jsx(_components.strong,{children:`Auto`}),` (default), Omni will auto-detect the dbt version from the `,_jsx(_components.code,{children:`require-dbt-version`}),` pin in `,_jsx(_components.code,{children:`dbt_project.yml`}),`. If a usable pin isn’t found, Omni defaults to the latest supported version of dbt. Otherwise, you can select a specific version from the list of versions that Omni supports. See `,_jsx(_components.a,{href:`/integrations/dbt#common-questions`,children:`supported dbt platforms and versions`}),` for more on how Omni picks a version.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save and Test Connection`}),`.`]}),`\n`]})}),_jsxs(Step,{title:`Configure commit signing`,id:`configure-commit-signing`,children:[_jsx(Note,{children:_jsx(_components.p,{children:`This step is optional.`})}),_jsxs(_components.p,{children:[`Authenticating through Omni’s GitHub app allows you to enable commit signing. When a user with a verified email adds Omni’s public signing key, Omni’s commits will show up as `,_jsx(_components.strong,{children:`Verified`}),`.`]}),_jsxs(_components.p,{children:[`The user with the verified `,_jsx(_components.strong,{children:`Committer email`}),` you defined in the previous step must complete the following to configure commit signing:`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In GitHub, navigate to `,_jsx(_components.strong,{children:`Settings > SSH and GPG keys`}),`. `,_jsx(_components.strong,{children:`Note`}),`: This is an individual `,_jsx(_components.strong,{children:`user’s`}),` settings, not the connected repository’s settings.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`New SSH key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Set the `,_jsx(_components.strong,{children:`Key type`}),` to `,_jsx(_components.strong,{children:`Signing key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.strong,{children:`Key`}),` field, paste the public key from the Omni Git settings page.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add SSH key`}),`.`]}),`\n`]})]})]})]}),`\n`,_jsxs(View,{title:`SSH authentication`,id:`ssh-authentication`,children:[_jsx(Heading,{level:`2`,id:`requirements-2`,children:`Requirements`}),_jsx(_components.p,{children:`To follow the steps in this guide, you’ll need:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsxs(_components.strong,{children:[`An existing `,_jsx(_components.a,{href:`/connect-data/setup`,children:`database connection`}),` in Omni`]})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/administration/users/permissions`,children:_jsx(_components.strong,{children:`Connection Admin permissions`})}),` for the connection you want to connect to dbt`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`configure-ssh-authentication`,children:`Configure SSH authentication`}),_jsxs(Steps,{titleSize:`h3`,children:[_jsxs(Step,{title:`Retrieve the dbt repository's SSH URL`,id:`retrieve-ssh-url`,children:[_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`In your browser, navigate to the GitHub repository you want to connect to Omni.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`Code`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`In the modal that displays, locate the `,_jsx(_components.strong,{children:type_1}),` option.`]}),`\n`]}),_jsx(_components.p,{children:`Keep this page open - you’ll need it in the next step.`})]}),_jsxs(Step,{title:`Create the dbt connection in Omni`,id:`create-connection`,children:[_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In Omni, navigate to `,_jsx(_components.strong,{children:`Settings > Connections`}),`.`]}),`\n`,_jsx(_components.li,{children:`Click the connection you want to use.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`dbt`}),` tab.`]}),`\n`,_jsxs(_components.li,{children:[`Fill in the following fields:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authentication Method`}),` - Select `,_jsx(_components.strong,{children:`SSH (Deploy Key)`}),` from the dropdown.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git SSH URL`}),` - Enter the SSH URL you retrieved in step 1 of this guide`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git Branch`}),` - Enter the name of the default branch for the repository. This is usually `,_jsx(_components.code,{children:`main`}),` or `,_jsx(_components.code,{children:`master`}),`.`,`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Avoid naming your branch `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),`. Omni creates temporary branches prefixed with `,_jsx(_components.code,{children:`omni/`}),` and `,_jsx(_components.code,{children:`omnianalytics/`}),` during internal operations like connection testing. A branch named `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),` in your repository will conflict with this and cause validation errors and connection test failures.`]})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Folder`}),` - If your repository contains multiple dbt projects, enter the path to the folder that contains the dbt project you want to connect.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable Virtual Schemas`}),` - Enables the use of virtual schemas, which require additional setup. See `,_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Working with dbt virtual schemas`}),` for instructions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable dbt Semantic Layer`}),` - Check this box to enable the `,_jsx(_components.a,{href:`/integrations/dbt/semantic-layer`,children:`dbt Semantic Layer integration`}),`. When enabled, Omni will use the dbt Semantic Layer to pull in metrics and dimensions defined in your dbt project.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-generate primary keys and relationships from dbt constraints`}),` - Check this box to allow Omni to generate primary keys and relationships from native dbt constraints.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dbt Version`}),` - When set to `,_jsx(_components.strong,{children:`Auto`}),` (default), Omni will auto-detect the dbt version from the `,_jsx(_components.code,{children:`require-dbt-version`}),` pin in `,_jsx(_components.code,{children:`dbt_project.yml`}),`. If a usable pin isn’t found, Omni defaults to the latest supported version of dbt. Otherwise, you can select a specific version from the list of versions that Omni supports. See `,_jsx(_components.a,{href:`/integrations/dbt#common-questions`,children:`supported dbt platforms and versions`}),` for more on how Omni picks a version.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`After the dbt connection is created, a `,_jsx(_components.strong,{children:`Public Key`}),` will display. Leave this page open - you’ll need it in the next step.`]})]}),_jsxs(Step,{title:`Add the deploy key to your repository`,id:`add-deploy-key`,children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`If the repository is already connected to Omni through the `,_jsx(_components.a,{href:`/integrations/git`,children:`Git integration`}),`, skip this step. Omni will use the existing deploy key.`]})}),_jsxs(_components.p,{children:[`In this step, you’ll add the `,_jsx(_components.strong,{children:`Public Key`}),` created in step 2 of this guide to your dbt repository as a deploy key.`]}),_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In the GitHub repository, click the `,_jsx(_components.strong,{children:`Settings`}),` tab.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Deploy keys`}),`, located in the `,_jsx(_components.strong,{children:`Security`}),` section of the sidebar.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add deploy key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Fill in the fields as follows:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Title`}),` - Enter a descriptive title to help you identify what the key is used for. For example, `,_jsx(_components.em,{children:`Omni Snowflake Model`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Key`}),` - `,keyInstructions_0]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Allow write access`}),` - `,writeAccess_0]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add key`}),`.`]}),`\n`]})]})]})]}),`\n`,_jsxs(View,{title:`HTTPS token authentication`,id:`https-token-authentication`,children:[_jsx(Heading,{level:`2`,id:`requirements-3`,children:`Requirements`}),_jsx(_components.p,{children:`To follow the steps in this guide, you’ll need:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsxs(_components.strong,{children:[`An existing `,_jsx(_components.a,{href:`/connect-data/setup`,children:`database connection`}),` in Omni`]})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/administration/users/permissions`,children:_jsx(_components.strong,{children:`Connection Admin permissions`})}),` for the connection you want to connect to dbt`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`https-token-authentication`,children:`HTTPS token authentication`}),_jsxs(Steps,{titleSize:`h3`,children:[_jsxs(Step,{title:`Retrieve the dbt repository's HTTPS URL`,id:`retrieve-the-dbt-repositorys-https-url`,children:[_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`In your browser, navigate to the GitHub repository you want to connect to Omni.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`Code`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`In the modal that displays, locate the `,_jsx(_components.strong,{children:type_2}),` option.`]}),`\n`]}),_jsx(_components.p,{children:`Keep this page open - you’ll need it in the next step.`})]}),_jsxs(Step,{title:`Create an access token`,id:`create-an-access-token`,children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`If the repository belongs to an organization, the organization must have a `,_jsx(_components.a,{href:`https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization`,children:`personal access token policy`}),` that allows the creation of personal access tokens.`]})}),_jsx(_components.p,{children:`In GitHub, create a fine-grained personal access token with the following permissions for the repository:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Contents`}),`: Read and write`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Metadata`}),`: Read-only (automatically included)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pull requests`}),`: Read and write`]}),`\n`]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token`,children:`GitHub’s documentation`}),` for instructions on creating a fine-grained personal access token.`]})]}),_jsx(Step,{title:`Create the dbt connection in Omni`,id:`create-https-connection`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In Omni, navigate to `,_jsx(_components.strong,{children:`Settings > Connections`}),`.`]}),`\n`,_jsx(_components.li,{children:`Click the connection you want to use.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`dbt`}),` tab.`]}),`\n`,_jsxs(_components.li,{children:[`Fill in the following fields:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authentication Method`}),` - Select `,_jsx(_components.strong,{children:`HTTPS (Token)`}),` from the dropdown.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git HTTPS URL`}),` - Enter the HTTPS URL you retrieved in step 1 of this guide`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Access Token`}),` - Paste the access token you created in step 2 of this guide`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git Branch`}),` - Enter the name of the default branch for the repository. This is usually `,_jsx(_components.code,{children:`main`}),` or `,_jsx(_components.code,{children:`master`}),`.`,`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Avoid naming your branch `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),`. Omni creates temporary branches prefixed with `,_jsx(_components.code,{children:`omni/`}),` and `,_jsx(_components.code,{children:`omnianalytics/`}),` during internal operations like connection testing. A branch named `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),` in your repository will conflict with this and cause validation errors and connection test failures.`]})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Folder`}),` - If your repository contains multiple dbt projects, enter the path to the folder that contains the dbt project you want to connect.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable Virtual Schemas`}),` - Enables the use of virtual schemas, which require additional setup. See `,_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Working with dbt virtual schemas`}),` for instructions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable dbt Semantic Layer`}),` - Check this box to enable the `,_jsx(_components.a,{href:`/integrations/dbt/semantic-layer`,children:`dbt Semantic Layer integration`}),`. When enabled, Omni will use the dbt Semantic Layer to pull in metrics and dimensions defined in your dbt project.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-generate primary keys and relationships from dbt constraints`}),` - Check this box to allow Omni to generate primary keys and relationships from native dbt constraints.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dbt Version`}),` - When set to `,_jsx(_components.strong,{children:`Auto`}),` (default), Omni will auto-detect the dbt version from the `,_jsx(_components.code,{children:`require-dbt-version`}),` pin in `,_jsx(_components.code,{children:`dbt_project.yml`}),`. If a usable pin isn’t found, Omni defaults to the latest supported version of dbt. Otherwise, you can select a specific version from the list of versions that Omni supports. See `,_jsx(_components.a,{href:`/integrations/dbt#common-questions`,children:`supported dbt platforms and versions`}),` for more on how Omni picks a version.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsx(_components.p,{children:`After you successfully connect your dbt repository, you need to:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/integrations/dbt/environments`,children:`Configure your production dbt environment`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/integrations/dbt/syncing-dbt`,children:`Sync dbt with Omni`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Set up Virtual Schemas`}),`. This isn’t required to use the dbt integration, but enabling Virtual Schemas before you start building in Omni avoids migrating later.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsx(AccordionGroup,{children:_jsxs(Accordion,{title:`Connection test fails with GitHub App authentication`,id:`connection-test-fails-with-github-app-authentication`,children:[_jsxs(_components.p,{children:[`If the connection test fails when using `,_jsx(_components.strong,{children:`GitHub App`}),` authentication, verify:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Installation ID is correct`}),` - The installation ID must be numeric and match the Omni GitHub App installation for your repository or organization. You can find this in your GitHub settings under `,_jsx(_components.strong,{children:`Integrations > GitHub Apps > Configure`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`GitHub App is installed`}),` - The Omni GitHub App must be installed and granted access to the repository. Check your GitHub organization or repository settings to confirm.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Repository URL is correct`}),` - The repository URL must be an HTTPS URL starting with `,_jsx(_components.code,{children:`https://github.com/`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`GitHub App is configured in Omni`}),` - Your Omni instance must have the GitHub App configured. If the GitHub App option doesn’t appear in the authentication method dropdown, contact your Omni administrator.`]}),`\n`]}),_jsxs(_components.p,{children:[`If you continue to experience issues, try using `,_jsx(_components.strong,{children:`SSH`}),` or `,_jsx(_components.strong,{children:`HTTPS token`}),` authentication instead.`]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{keyInstructions_0,writeAccess_0,type_2,type_1,type_0,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":"Connecting a GitHub dbt repository to Omni","sidebarTitle":"GitHub","description":"Connect your GitHub dbt repository to Omni.","keywords":["dbt","dbt github","github","dbt git","setup dbt","connect dbt","dbt integration","https authentication","access token","deploy token"],"href":"/integrations/dbt/setup/github"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[5792,5811,"`HTTPS`}),` option.`"],[16427,16448,"`SSH`}),` option.`]}"],[21868,22014,"`Copy the public key from the Omni dbt settings tab and paste it into this field"],[22055,28659,"_jsx(_components.strong,{children:`Allow write access`}),` - `,`Check this box if you want to push changes made in Omni to the repository`]}"],[28755,28981,"Add key`}),`.`]}),`\n`]})]})]})]}),`\n`,_jsxs(View,{title:`HTTPS token authentication`,id:`https-token-authentication`,children:[_jsx(Heading,{level:`2`,id:`requirements-3`,children:`Requirements`}),_jsx(_components.p,{children:`To follow the steps in this guide, you’ll need:`}),_jsxs(_components.ul,{"],[29029,29262,"s(_components.strong,{children:[`An existing `,_jsx(_components.a,{href:`/connect-data/setup`,children:`database connection`}),` in Omni`]})"],[29328,29959,"administration/users/permissions`,children:_jsx(_components.strong,{children:`Connection Admin permissions`})}),` for the connection you want to connect to dbt`]}),`\n`]}),_jsx(Heading,{level:`2`,id:`https-token-authentication`,children:`HTTPS token authentication`}),_jsxs(Steps,{titleSize:`h3`,children:[_jsxs(Step,{title:`Retrieve the dbt repository's HTTPS URL`,id:`retrieve-the-dbt-repositorys-https-url`,children:[_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`In your browser, navigate to the GitHub repository you want to connect to Omni.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`Code`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`In the modal that displays, locate the `,_jsx(_components.strong,{children:`HTTPS`}),` option.`]}),`\n`]}),_jsx(_components.p,{children:`Keep this page open - you’ll need it in the next step.`})]}),_jsxs(Step,{title:`Create an access token`,id:`create-an-access-token`,children:[_jsx(Note,{children:_jsxs(_components.p,{children:[`If the repository belongs to an organization, the organization must have a `,_jsx(_components.a,{href:`https://docs.github.com/en/organizations/managing-programmatic-access-to-your-organization/setting-a-personal-access-token-policy-for-your-organization`,children:`personal access token policy`}),` that allows the creation of personal access tokens.`]})}),_jsx(_components.p,{children:`In GitHub, create a fine-grained personal access token with the following permissions for the repository:`}),_"],[30061,30351,"Contents`}),`: Read and write`]}),`\n`,_j"],[30416,30599,"Metadata`}),`: Read-only (automatically included)`]}),`\n`,_j"],[30664,30818,"Pull requests`}),`: Read and write`]}),`\n`]}),_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token`,children:`GitHub’s documentation`}),` for instructions on creating a fine-grained personal access token.`]})]}),_jsx(Step,{title:`Create the dbt connection in Omni`,id:`create-https-connection`,children:_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`In Omni, navigate to `,_jsx(_components.strong,{children:`Settings > Connections`}),`.`]}),`\n`,_jsx(_components.li,{children:`Click the connection you want to use.`}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.strong,{children:`dbt`}),` tab.`]}),`\n`,_jsxs(_components.li,{children:[`Fill in the following fields:`,`\n`,_jsxs(_components.ul,{children:[`\n"],[30887,31802,"Authentication Method`}),` - Select `,_jsx(_components.strong,{children:`HTTPS (Token)`}),` from the dropdown.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git HTTPS URL`}),` - Enter the HTTPS URL you retrieved in step 1 of this guide`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Access Token`}),` - Paste the access token you created in step 2 of this guide`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Git Branch`}),` - Enter the name of the default branch for the repository. This is usually `,_jsx(_components.code,{children:`main`}),` or `,_jsx(_components.code,{children:`master`}),`.`,`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Avoid naming your branch `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),`. Omni creates temporary branches prefixed with `,_jsx(_components.code,{children:`omni/`}),` and `,_jsx(_components.code,{children:`omnianalytics/`}),` during internal operations like connection testing. A branch named `,_jsx(_components.code,{children:`omni`}),` or `,_jsx(_components.code,{children:`omnianalytics`}),` in your repository will conflict with this and cause validation errors and connection test failures.`]})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Folder`}),` - If your repository contains multiple dbt projects, enter the path to the folder that contains the dbt project you want to connect.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable Virtual Schemas`}),` - Enables the use of virtual schemas, which require additional setup. See `,_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Working with dbt virtual schemas`}),` for instructions.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Enable dbt Semantic Layer`}),` - Check this box to enable the `,_jsx(_components.a,{href:`/integrations/dbt/semantic-layer`,children:`dbt Semantic Layer integration`}),`. When enabled, Omni will use the dbt Semantic Layer to pull in metrics and dimensions defined in your dbt project.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Auto-generate primary keys and relationships from dbt constraints`}),` - Check this box to allow Omni to generate primary keys and relationships from native dbt constraints.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`dbt Version`}),` - When set to `,_jsx(_components.strong,{children:`Auto`}),` (default), Omni will auto-detect the dbt version from the `,_jsx(_components.code,{children:`require-dbt-version`}),` pin in `,_jsx(_components.code,{children:`dbt_project.yml`}),`. If a usable pin isn’t found, Omni defaults to the latest supported version of dbt. Otherwise, you can select a specific version from the list of versions that Omni supports. See `,_jsx(_components.a,{href:`/integrations/dbt#common-questions`,children:`supported dbt platforms and versions`}),` for more on how Omni picks a version.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`]})})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsx(_components.p,{children:`After you successfully connect your dbt repository, you need to:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/integrations/dbt/environments`,children:`Configure your production dbt environment`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/integrations/dbt/syncing-dbt`,children:`Sync dbt with Omni`})}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/integrations/dbt/virtual-schemas`,children:`Set up Virtual Schemas`}),`. This isn’t required to use the dbt integration, but enabling Virtual Schemas before you start building in Omni avoids migrating later.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsx(AccordionGroup,{children:_jsxs(Accordion,{title:`Connection test fails with GitHub App authentication`,id:`connection-test-fails-with-github-app-authentication`,children:[_jsxs(_components.p,{children:[`If the connection test fails when using `,_jsx(_components.strong,{children:`GitHub App`}),` authentication, verify:`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Installation ID is correct`}),` - The installation ID must be numeric and match the Omni GitHub App installation for your repository or organization. You can find this in your GitHub settings under `,_jsx(_components.strong,{children:`Integrations > GitHub Apps > Configure`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`GitHub App is installed`}),` - The Omni GitHub App must be installed and granted access to the repository. Check your GitHub organization or repository settings to confirm.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Repository URL is correct`}),` - The repository URL must be an HTTPS URL starting with `,_jsx(_components.code,{children:`https://github.com/`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`GitHub App is configured in Omni`}),` - Your Omni instance must have the GitHub App configured. If the GitHub App option doesn’t appear in the authentication method dropdown, contact your Omni administrator.`]}),`\n`]}),_jsxs(_components.p,{children:[`If you continue to experience issues, try using `,_jsx(_components.strong,{children:`SSH`}),` or `,_jsx(_components.strong,{children:`HTTPS token`}),` authentication instead.`]})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{keyInstructions_0,writeAccess_0,type_2,type_1,type_0,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.\")}"]]},"mdxExtracts":{"tableOfContents":[{"title":"Select an authentication method","slug":"select-an-authentication-method","depth":2,"children":[],"viewId":"Select authentication method"},{"title":"Requirements","slug":"requirements","depth":2,"children":[],"viewId":"GitHub App"},{"title":"Configure GitHub App authentication","slug":"configure-github-app-authentication","depth":2,"children":[{"title":"Retrieve the repository's HTTPS URL","slug":"retrieve-the-repositorys-https-url","depth":3,"children":[],"viewId":"GitHub App"},{"title":"Launch the Omni GitHub App installation flow","slug":"launch-the-omni-github-app-installation-flow","depth":3,"children":[],"viewId":"GitHub App"},{"title":"Install the Omni GitHub App","slug":"install-the-omni-github-app","depth":3,"children":[],"viewId":"GitHub App"},{"title":"Configure the Git settings in Omni","slug":"configure-the-git-settings-in-omni","depth":3,"children":[],"viewId":"GitHub App"},{"title":"Configure commit signing","slug":"configure-commit-signing","depth":3,"children":[],"viewId":"GitHub App"}],"viewId":"GitHub App"},{"title":"Requirements","slug":"requirements-2","depth":2,"children":[],"viewId":"SSH authentication"},{"title":"Configure SSH authentication","slug":"configure-ssh-authentication","depth":2,"children":[{"title":"Retrieve the dbt repository's SSH URL","slug":"retrieve-ssh-url","depth":3,"children":[],"viewId":"SSH authentication"},{"title":"Create the dbt connection in Omni","slug":"create-connection","depth":3,"children":[],"viewId":"SSH authentication"},{"title":"Add the deploy key to your repository","slug":"add-deploy-key","depth":3,"children":[],"viewId":"SSH authentication"}],"viewId":"SSH authentication"},{"title":"Requirements","slug":"requirements-3","depth":2,"children":[],"viewId":"HTTPS token authentication"},{"title":"HTTPS token authentication","slug":"https-token-authentication","depth":2,"children":[{"title":"Retrieve the dbt repository's HTTPS URL","slug":"retrieve-the-dbt-repositorys-https-url","depth":3,"children":[],"viewId":"HTTPS token authentication"},{"title":"Create an access token","slug":"create-an-access-token","depth":3,"children":[],"viewId":"HTTPS token authentication"},{"title":"Create the dbt connection in Omni","slug":"create-https-connection","depth":3,"children":[],"viewId":"HTTPS token authentication"}],"viewId":"HTTPS token authentication"},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"multiViewItems":[{"title":"Select authentication method","content":"","id":"select-authentication-method","active":true},{"title":"GitHub App","content":"","id":"github-app","active":false},{"title":"SSH authentication","content":"","id":"ssh-authentication","active":false},{"title":"HTTPS token authentication","content":"","id":"https-token-authentication","active":false}],"codeExamples":{}},"jsLinks":[],"subdomain":"omni-e7402367","siteName":"Omni Docs","title":"Connecting a GitHub dbt repository to Omni - Omni Docs","relatedPagesConfig":{"enabled":true,"limit":3,"mode":"manual"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-23T21:29:18.110Z","originalFileLocation":"integrations/dbt/setup/github.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=\"Connect your GitHub dbt repository to Omni.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Omni Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_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/omni-e7402367/Hcd24pRrgU0Go9sj/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Connecting a GitHub dbt repository to Omni - Omni Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect your GitHub dbt repository to Omni.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Omni Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.omni.co/integrations/dbt/setup/github\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://omni-e7402367.mintlify.site/_mintlify/api/og/v2?division=Connect+Git\u0026amp;title=Connecting+a+GitHub+dbt+repository+to+Omni\u0026amp;description=Connect+your+GitHub+dbt+repository+to+Omni.\u0026amp;theme=f0d77b05d3972e3534869d72\u0026amp;signature=b9c74192cc20a5cb718164ba301412774a69e5d06f06cbcb6b45d38dcd5e689c\">\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=\"Connecting a GitHub dbt repository to Omni - Omni Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect your GitHub dbt repository to Omni.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://omni-e7402367.mintlify.site/_mintlify/api/og/v2?division=Connect+Git\u0026amp;title=Connecting+a+GitHub+dbt+repository+to+Omni\u0026amp;description=Connect+your+GitHub+dbt+repository+to+Omni.\u0026amp;theme=f0d77b05d3972e3534869d72\u0026amp;signature=b9c74192cc20a5cb718164ba301412774a69e5d06f06cbcb6b45d38dcd5e689c\">\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/omni-e7402367/Hcd24pRrgU0Go9sj/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Omni Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF5FA2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.omni.co/integrations/dbt/setup/github\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/integrations/dbt/setup/github.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.omni.co/#organization\",\"name\":\"Omni Docs\",\"url\":\"https://docs.omni.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/omni-e7402367/m1fg0tfdkEcnYhky/images/logo/omni-black.png?fit=max\u0026auto=format\u0026n=m1fg0tfdkEcnYhky\u0026q=85\u0026s=85b81b605382b15b60eb75159899002a\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.omni.co#website\",\"name\":\"Omni Docs\",\"url\":\"https://docs.omni.co\",\"publisher\":{\"@id\":\"https://docs.omni.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.omni.co/integrations/dbt/setup/github#webpage\",\"url\":\"https://docs.omni.co/integrations/dbt/setup/github\",\"name\":\"Connecting a GitHub dbt repository to Omni\",\"description\":\"Connect your GitHub dbt repository to Omni.\",\"dateModified\":\"2026-09-23T21:29:18.110Z\",\"isPartOf\":{\"@id\":\"https://docs.omni.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.omni.co/integrations/dbt/setup/github#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.omni.co/integrations/dbt/setup/github#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Manage integrations\",\"item\":\"https://docs.omni.co/integrations/dbt/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"dbt\",\"item\":\"https://docs.omni.co/integrations/dbt/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Connect Git\",\"item\":\"https://docs.omni.co/integrations/dbt/setup/index\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Connecting a GitHub dbt repository to Omni\",\"item\":\"https://docs.omni.co/integrations/dbt/setup/github\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.omni.co/integrations/dbt/setup/github#article\",\"headline\":\"Connecting a GitHub dbt repository to Omni\",\"name\":\"Connecting a GitHub dbt repository to Omni\",\"description\":\"Connect your GitHub dbt repository to Omni.\",\"url\":\"https://docs.omni.co/integrations/dbt/setup/github\",\"mainEntityOfPage\":{\"@id\":\"https://docs.omni.co/integrations/dbt/setup/github#webpage\"},\"dateModified\":\"2026-09-23T21:29:18.110Z\",\"keywords\":\"dbt, dbt github, github, dbt git, setup dbt, connect dbt, dbt integration, https authentication, access token, deploy token\",\"publisher\":{\"@id\":\"https://docs.omni.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.omni.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Omni Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Omni Docs","nav":{"global":null,"tabs":[{"tab":"Docs","groups":[{"group":"Getting started","icon":"hand-sparkles","pages":[{"title":"Welcome to the Omni docs!","sidebarTitle":"Introduction","mode":"wide","href":""},{"title":"AI in Omni","sidebarTitle":"AI in Omni","href":"/ai/index"},{"title":"Omni for developers","sidebarTitle":"Developers","href":"/getting-started/developers"},{"title":"Onboarding to Omni as a Viewer","sidebarTitle":"Viewers","href":"/getting-started/viewers"},{"title":"Keyboard shortcuts","sidebarTitle":"Keyboard shortcuts","href":"/getting-started/keyboard-shortcuts"},{"title":"Omni Best Practices","sidebarTitle":"Best practices","href":"/getting-started/best-practices"}]},{"group":"Manage content","icon":"book","pages":[{"group":"Navigate","pages":[{"title":"Navigating Omni","sidebarTitle":"Overview","href":"/content/navigate"},{"title":"Searching content","sidebarTitle":"Search content","href":"/content/search"},{"title":"Tracking recent work with the My Activity page","sidebarTitle":"My Activity","href":"/content/activity"}]},{"title":"Organizing content with folders \u0026 labels","sidebarTitle":"Folders and labels","href":"/content/organize"},{"group":"Draft and publish content","pages":[{"title":"Editing \u0026 publishing content","sidebarTitle":"Overview","href":"/content/develop/index"},{"title":"Developing content with Draft-only mode","sidebarTitle":"Draft-only mode","href":"/content/develop/drafts"},{"title":"Developing content and models with Branch Mode","sidebarTitle":"Branch Mode","href":"/content/develop/branch-mode"},{"title":"Common content and model publishing workflows","sidebarTitle":"Common workflows","href":"/content/develop/workflows"}]},{"title":"Content sharing","sidebarTitle":"Share content","href":"/share/index"},{"title":"Archiving and restoring content","sidebarTitle":"Archive and restore content","href":"/content/archive-restore"}]},{"group":"Analyze \u0026 build","icon":"magnifying-glass-chart","pages":[{"title":"Analyze \u0026 build in Omni","sidebarTitle":"Overview","href":"/analyze-explore/index"},{"title":"Build analyses in workbooks","sidebarTitle":"Workbook basics","href":"/analyze-explore/workbook-basics"},{"group":"Query data","root":{"title":"Querying data in Omni","sidebarTitle":"Overview","href":"/analyze-explore/querying"},"pages":[{"group":"With AI","pages":[{"title":"Omni Agent","sidebarTitle":"Standalone AI chat","href":"/ai/chat"},{"title":"Building queries \u0026 filters with AI","sidebarTitle":"Workbook Agent","href":"/ai/queries"},{"title":"Skills","sidebarTitle":"Skills","href":"/ai/skills"},{"title":"AI Routines","sidebarTitle":"Routines","href":"/ai/routines"},{"title":"Generating forecasts with AI","sidebarTitle":"Forecast with AI","href":"/ai/forecasting"}]},{"title":"Building point-and-click queries","sidebarTitle":"Point-and-click","href":"/analyze-explore/point-click-queries"},{"title":"Building workbook queries on topics","sidebarTitle":"Topic-based queries","href":"/analyze-explore/queries/topics"},{"title":"Filters","sidebarTitle":"Filters","href":"/analyze-explore/queries/filters"},{"title":"Saving queries as views","sidebarTitle":"Queries as views","href":"/analyze-explore/saved-views"},{"group":"SQL","pages":[{"title":"Writing SQL in Omni","sidebarTitle":"Write SQL queries","href":"/analyze-explore/sql/index"},{"title":"Understanding SQL generation in Omni","sidebarTitle":"SQL generation","href":"/analyze-explore/sql/generation"},{"title":"Handling fan out with symmetric aggregates","sidebarTitle":"Symmetric aggregates","href":"/analyze-explore/sql/symmetric-aggregates"}]},{"title":"Cross model tabs","sidebarTitle":"Cross model tabs","href":"/analyze-explore/cross-model-tabs"}]},{"group":"Add data","pages":[{"title":"Uploading CSVs with data input tables","sidebarTitle":"CSV \u0026 Excel uploads","href":"/analyze-explore/data-input-csvs"},{"title":"Input columns","sidebarTitle":"Input columns","href":"/analyze-explore/input-columns"}]},{"title":"Formatting \u0026 analyzing data with spreadsheet tabs","sidebarTitle":"Spreadsheets","href":"/analyze-explore/spreadsheet-tabs"},{"group":"Calculations","root":{"title":"Using Excel-style functions to create table calculations","sidebarTitle":"Overview","href":"/analyze-explore/calculations/index"},"pages":[{"title":"Supported table calculation functions","sidebarTitle":"All functions","href":"/analyze-explore/calculations/all"},{"title":"Supported AI functions","sidebarTitle":"AI","href":"/analyze-explore/calculations/ai"},{"title":"Supported date \u0026 time functions","sidebarTitle":"Date \u0026 time","href":"/analyze-explore/calculations/date-time"},{"title":"Supported math and number functions","sidebarTitle":"Math \u0026 number","href":"/analyze-explore/calculations/math-number"},{"title":"Supported position functions","sidebarTitle":"Position","href":"/analyze-explore/calculations/position"},{"title":"Supported logic functions","sidebarTitle":"Logic","href":"/analyze-explore/calculations/logic"},{"title":"Supported text functions","sidebarTitle":"Text","href":"/analyze-explore/calculations/text"}]},{"group":"Custom fields","pages":[{"title":"Creating custom fields in Omni workbooks","sidebarTitle":"Overview","href":"/analyze-explore/custom-fields/index"},{"title":"Binning and grouping custom fields","sidebarTitle":"Bin and group","href":"/analyze-explore/custom-fields/bin-group"},{"title":"Creating filtered measures from query results","sidebarTitle":"Filtered measures","href":"/analyze-explore/custom-fields/filtered-measures"},{"title":"Ranking values with Top N fields","sidebarTitle":"Top N","href":"/analyze-explore/custom-fields/top-n"}]},{"title":"Workbook inspector","sidebarTitle":"Debug \u0026 inspect queries","href":"/analyze-explore/workbook-inspector"},{"group":"Performance optimization","pages":[{"title":"Improving query performance with caching","sidebarTitle":"Caching","href":"/analyze-explore/performance/caching"},{"title":"Optimizing query performance with aggregate awareness","sidebarTitle":"Aggregate awareness","href":"/analyze-explore/performance/aggregate-awareness"}]}]},{"group":"Visualize \u0026 present","icon":"table-columns","pages":[{"title":"Visualize \u0026 present","sidebarTitle":"Overview","href":"/visualize-present/index"},{"group":"Visualizations","root":{"title":"Visualize data in Omni","sidebarTitle":"Overview","href":"/visualize-present/visualizations/index"},"pages":[{"title":"Generating visualizations with AI","sidebarTitle":"Build with AI","href":"/ai/visualizations"},{"group":"Chart types","pages":[{"title":"Overview","href":"/visualize-present/visualizations/types/index"},{"title":"AI summary visualization","sidebarTitle":"AI summary","href":"/visualize-present/visualizations/types/ai-summary"},{"title":"Area charts","href":"/visualize-present/visualizations/types/area"},{"title":"Bar charts","href":"/visualize-present/visualizations/types/bar"},{"title":"Boxplots","href":"/visualize-present/visualizations/types/boxplot"},{"title":"Funnel charts","sidebarTitle":"Funnel","href":"/visualize-present/visualizations/types/funnel"},{"title":"Heatmap Charts","href":"/visualize-present/visualizations/types/heatmap"},{"title":"KPI","href":"/visualize-present/visualizations/types/kpi"},{"title":"Line charts","href":"/visualize-present/visualizations/types/line"},{"title":"Maps","href":"/visualize-present/visualizations/types/map"},{"title":"Markdown visualizations","sidebarTitle":"Markdown","href":"/visualize-present/visualizations/types/markdown"},{"title":"Pie \u0026 Donut charts","href":"/visualize-present/visualizations/types/pie"},{"title":"Sankey charts","sidebarTitle":"Sankey","href":"/visualize-present/visualizations/types/sankey"},{"title":"Scatterplots and bubble charts","sidebarTitle":"Scatterplots","href":"/visualize-present/visualizations/types/scatterplot"},{"group":"Tables","root":{"title":"Table visualizations","sidebarTitle":"Tables","href":"/visualize-present/visualizations/types/table"},"pages":[{"title":"Configuring table field display options","sidebarTitle":"Field display options","href":"/visualize-present/visualizations/types/table-field-display"}]},{"title":"Single record tables","href":"/visualize-present/visualizations/types/single-record"}]},{"group":"Layers","root":{"title":"Build X/Y charts with layers","sidebarTitle":"Layers","href":"/visualize-present/visualizations/layers/index"},"pages":[{"title":"Measure names and Measure values","sidebarTitle":"Measure names and values","href":"/visualize-present/visualizations/layers/measure-names-values"},{"title":"Smart aggregation","sidebarTitle":"Smart aggregation","href":"/visualize-present/visualizations/layers/smart-aggregation"},{"title":"Switch between the layers and classic editors","sidebarTitle":"Switch editors","href":"/visualize-present/visualizations/layers/switch-editors"}]},{"title":"Custom visualizations","href":"/visualize-present/visualizations/types/custom"},{"group":"Configure charts","pages":[{"title":"Color by / Stacking","href":"/visualize-present/visualizations/configuration/color"},{"title":"Series configuration","href":"/visualize-present/visualizations/configuration/series-configuration"},{"title":"Series mapping","href":"/visualize-present/visualizations/configuration/series-mapping"},{"title":"Size by","href":"/visualize-present/visualizations/configuration/size"},{"title":"Tooltips","href":"/visualize-present/visualizations/configuration/tooltips"},{"title":"X-axis configuration","href":"/visualize-present/visualizations/configuration/x-axis"},{"title":"Y-axis (left axis / right axis)","href":"/visualize-present/visualizations/configuration/y-axis"}]},{"group":"Showcase","root":{"title":"Visualization showcase","mode":"wide","href":"/showcase/index"},"pages":[{"title":"Calendar heatmaps","href":"/showcase/visualizations/calendar-heatmaps"},{"title":"Card with criteria checklist","href":"/showcase/visualizations/card-criteria-checklist"},{"title":"Card grid","href":"/showcase/visualizations/card-grid"},{"title":"Card with target candlesticks","href":"/showcase/visualizations/card-target-candlesticks"},{"title":"Card with strip plot","href":"/showcase/visualizations/card-with-strip-plot"},{"title":"Cohort table","href":"/showcase/visualizations/cohort-table"},{"title":"Colored progress bars","href":"/showcase/visualizations/colored-progress-bars"},{"title":"Dashboard tabs","href":"/showcase/visualizations/dashboard-tabs"},{"title":"Dashboard tile anchors (table of contents)","href":"/showcase/visualizations/dashboard-tile-anchors"},{"title":"Data readout","href":"/showcase/visualizations/data-readout"},{"title":"Dumbbell plot","href":"/showcase/visualizations/dumbbell-plot"},{"title":"Gauges","href":"/showcase/visualizations/gauge"},{"title":"Gradient card with metrics","href":"/showcase/visualizations/gradient-card"},{"title":"Honeycomb categorical chart","href":"/showcase/visualizations/honeycomb-categorical"},{"title":"Honeycomb map","href":"/showcase/visualizations/honeycomb-map"},{"title":"Image grid","href":"/showcase/visualizations/image-grid"},{"title":"Invoice report","href":"/showcase/visualizations/invoice-report"},{"title":"Kanban","href":"/showcase/visualizations/kanban"},{"title":"KPI conditional colors","href":"/showcase/visualizations/kpi-conditional-colors"},{"title":"KPI table","href":"/showcase/visualizations/kpi-table"},{"title":"KPI with sparkline","href":"/showcase/visualizations/kpi-with-sparkline"},{"title":"Card list","href":"/showcase/visualizations/list-view"},{"title":"Location with national flag","href":"/showcase/visualizations/location-with-national-flag"},{"title":"Metric tree","href":"/showcase/visualizations/metric-tree"},{"title":"Pie or donut with custom legend","href":"/showcase/visualizations/pie-donut-custom-legend"},{"title":"Pills","href":"/showcase/visualizations/pills"},{"title":"Record lookup","href":"/showcase/visualizations/record-lookup"},{"title":"Repeating pie charts","href":"/showcase/visualizations/repeating-pie-chart"},{"title":"Repeating square fill charts","href":"/showcase/visualizations/repeating-square-fill-chart"},{"title":"Repeating waffle charts","href":"/showcase/visualizations/repeating-waffle-chart"},{"title":"Fancy subtotal table","href":"/showcase/visualizations/simple-subtotal-table"},{"title":"Star rating","href":"/showcase/visualizations/star-rating"},{"title":"Status indicator","href":"/showcase/visualizations/status-indicator"},{"title":"Symmetric funnel","href":"/showcase/visualizations/symmetric-funnel"},{"title":"Table with tiny bar charts","href":"/showcase/visualizations/table-with-tiny-bars"},{"title":"Team progress tracker","href":"/showcase/visualizations/team-progress-tracker"},{"title":"Test result cards","href":"/showcase/visualizations/test-results-cards"},{"title":"Thermometer progress indicator","href":"/showcase/visualizations/thermometer"},{"title":"Uptime heatmaps","href":"/showcase/visualizations/uptime-heatmaps"},{"title":"User profile","href":"/showcase/visualizations/user-profile"},{"title":"Word cloud","href":"/showcase/visualizations/word-cloud"}]}]},{"group":"Dashboards","root":{"title":"Dashboards","sidebarTitle":"Overview","href":"/visualize-present/dashboards/index"},"pages":[{"title":"Create a dashboard","sidebarTitle":"Create","href":"/visualize-present/dashboards/create"},{"group":"Build layouts","pages":[{"title":"Building dashboard layouts with containers and items","sidebarTitle":"Layout containers and items","href":"/visualize-present/dashboards/containers-items"},{"title":"Wireframing with placeholder content","sidebarTitle":"Placeholders","href":"/visualize-present/dashboards/placeholders"},{"title":"Creating multi-page dashboards","sidebarTitle":"Multi-page dashboards","href":"/visualize-present/dashboards/pages"},{"title":"Building page navigation for multi-page dashboards","sidebarTitle":"Page navigation","href":"/visualize-present/dashboards/page-navigation"}]},{"group":"Add content","pages":[{"title":"Working with dashboard charts","sidebarTitle":"Charts","href":"/visualize-present/dashboards/charts"},{"title":"Adding text with Markdown tiles","sidebarTitle":"Text / Markdown","href":"/visualize-present/dashboards/text-markdown"},{"group":"Filters","root":{"title":"Working with dashboard filters","sidebarTitle":"Filters","href":"/visualize-present/dashboards/filters"},"pages":[{"title":"Filter display options","sidebarTitle":"Filter display options","href":"/visualize-present/dashboards/filter-display-options"},{"title":"Filter interactivity","sidebarTitle":"Filter interactivity","href":"/visualize-present/dashboards/filter-interactivity"}]},{"group":"Controls","root":{"title":"Dynamically displaying tile fields with controls","sidebarTitle":"Field controls","href":"/visualize-present/dashboards/controls"},"pages":[{"title":"Dynamic filter controls","sidebarTitle":"Dynamic filter controls","href":"/visualize-present/dashboards/dynamic-filter-controls"}]},{"group":"Dynamic content","pages":[{"title":"Creating dynamic dashboard content with Mustache","sidebarTitle":"Overview","href":"/visualize-present/dynamic-content"},{"title":"Mustache syntax reference","href":"/visualize-present/mustache-reference"},{"title":"Mustache cheatsheet","mode":"wide","href":"/visualize-present/mustache-cheatsheet"}]}]},{"title":"Applying themes to dashboards","sidebarTitle":"Theming","href":"/visualize-present/dashboards/theming"},{"group":"Preview and test","pages":[{"title":"Preview mode","href":"/visualize-present/dashboards/preview-mode"},{"title":"Viewing dashboards as another user","sidebarTitle":"View as user","href":"/visualize-present/dashboards/view-as"}]},{"group":"Manage dashboards","pages":[{"title":"Managing dashboard settings","sidebarTitle":"Settings","href":"/visualize-present/dashboards/settings"},{"title":"Enabling timezone selection on documents","sidebarTitle":"Timezone selection","href":"/visualize-present/dashboards/timezone-override"},{"title":"Analyzing dashboard performance","sidebarTitle":"Dashboard performance profiler","href":"/visualize-present/dashboards/performance-profiler"},{"title":"Downloading dashboards","sidebarTitle":"Download","href":"/visualize-present/dashboards/download"},{"title":"Defining custom dashboard error and empty results messages","sidebarTitle":"Custom error \u0026 empty result messages","href":"/visualize-present/dashboards/custom-state-message"},{"title":"Removing a dashboard from a document","sidebarTitle":"Remove a dashboard","href":"/visualize-present/dashboards/delete"}]}]},{"title":"Chat with Content","sidebarTitle":"Chat with Content","href":"/ai/dashboard-assistant"},{"group":"Apps","root":{"title":"Apps","sidebarTitle":"Apps","href":"/visualize-present/apps/index"},"pages":[{"title":"Styling Apps","sidebarTitle":"Styling","href":"/visualize-present/apps/styling"},{"title":"Inspecting App elements","sidebarTitle":"Element inspector","href":"/visualize-present/apps/inspect"},{"title":"Downloading apps","sidebarTitle":"Download","href":"/visualize-present/apps/download"},{"title":"Importing Claude dashboards as apps","sidebarTitle":"Import from Claude","href":"/visualize-present/apps/claude-dashboards"},{"title":"App settings","sidebarTitle":"Settings","href":"/visualize-present/apps/settings"}]}]},{"group":"Deliver content","icon":"user-group","pages":[{"title":"Sharing content with schedules \u0026 alerts","sidebarTitle":"Overview","href":"/share/deliveries/index"},{"title":"Delivering Omni content to Amazon S3","sidebarTitle":"Amazon S3","href":"/share/deliveries/amazon-s3"},{"group":"Email","pages":[{"title":"Delivering Omni content via email","sidebarTitle":"Create email delivery","href":"/share/deliveries/email/index"},{"title":"Personalizing email deliveries with recipient attributes","sidebarTitle":"Personalize deliveries","href":"/share/deliveries/email/personalization"},{"title":"Whitelabeling sender addresses for email deliveries","sidebarTitle":"Whitelabel sender address","href":"/share/deliveries/email/whitelabel"},{"title":"Restricting recipient email domains with allowlist","sidebarTitle":"Domain allowlist","href":"/share/deliveries/email/domain-allowlist"}]},{"title":"Delivering Omni content to Google Sheets","sidebarTitle":"Google Sheets","href":"/share/deliveries/google-sheets"},{"title":"Delivering Omni content to an SFTP server","sidebarTitle":"SFTP","href":"/share/deliveries/sftp"},{"title":"Delivering Omni content to Slack","sidebarTitle":"Slack","href":"/share/deliveries/slack"},{"title":"Webhook deliveries","sidebarTitle":"Webhooks","href":"/share/deliveries/webhooks"},{"title":"Creating dynamic delivery content with Mustache","sidebarTitle":"Dynamic content","href":"/share/deliveries/dynamic-content"},{"title":"Troubleshooting failed deliveries","sidebarTitle":"Troubleshooting","href":"/share/deliveries/troubleshooting"}]},{"group":"Model data","icon":"wrench","pages":[{"group":"Getting started","pages":[{"title":"Modeling in Omni","sidebarTitle":"Overview","href":"/modeling/index"},{"title":"Developing in Omni: Permissions \u0026 content organization","sidebarTitle":"Permissions \u0026 content organization","href":"/modeling/develop/guides/permissions-content-org"},{"title":"Developing in Omni: Modeling in workbooks","sidebarTitle":"Workbook models","href":"/modeling/develop/guides/workbook-modeling"},{"title":"Developing in Omni: Model IDE","sidebarTitle":"Model IDE","href":"/modeling/develop/guides/model-ide"},{"title":"Developing in Omni: Advanced modeling concepts","sidebarTitle":"Advanced concepts","href":"/modeling/develop/guides/advanced-concepts"}]},{"group":"Develop models","root":{"title":"Managing your models","sidebarTitle":"Management","href":"/modeling/develop/model-management"},"pages":[{"title":"Model generation","href":"/modeling/develop/model-generation"},{"title":"Modeling Agent","sidebarTitle":"Modeling Agent","href":"/ai/model-assistant"},{"group":"Optimize for AI","pages":[{"title":"Suggestions","sidebarTitle":"Suggestions","href":"/ai/suggestions"},{"title":"Evals","sidebarTitle":"Evals","href":"/ai/evals"},{"title":"Optimize models for Omni AI","sidebarTitle":"Context management","href":"/modeling/develop/ai-optimization"},{"title":"Learn from conversation","sidebarTitle":"Learn from conversation","href":"/ai/learn-from-conversation"}]},{"title":"Promoting workbook changes to the shared model","sidebarTitle":"Promote changes","href":"/modeling/develop/promotion"},{"title":"Incorporating database changes with schema refreshes","sidebarTitle":"Schema refreshes","href":"/modeling/develop/schema-refreshes"},{"title":"Table migration","sidebarTitle":"Migrate tables","href":"/modeling/develop/table-migration"},{"title":"Validating model changes with the Content Validator","sidebarTitle":"Validate content","href":"/modeling/develop/content-validator"},{"title":"Viewing and restoring model versions in the model IDE","sidebarTitle":"Compare and restore versions","href":"/modeling/develop/history"},{"group":"Shared extensions","root":{"title":"Shared extension models","sidebarTitle":"Shared extensions","href":"/modeling/develop/shared-extensions/index"},"pages":[{"title":"Setting up a shared extension model","sidebarTitle":"Setup","href":"/modeling/develop/shared-extensions/setup"},{"title":"Extension settings","sidebarTitle":"Settings","href":"/modeling/develop/shared-extensions/settings"},{"title":"Branches and Git for extension models","sidebarTitle":"Branches and Git","href":"/modeling/develop/shared-extensions/extension-branches"}]}]},{"group":"Model settings","root":{"title":"Configuring your models","sidebarTitle":"Overview","mode":"wide","href":"/modeling/models/index"},"pages":[{"title":"Controlling data access using the modeling layer","sidebarTitle":"Control data access","href":"/modeling/develop/data-access-control"},{"title":"Formatting values","sidebarTitle":"Format values","href":"/modeling/models/format-values"},{"group":"Model file parameters","expanded":false,"pages":[{"title":"access_grants - Model files","sidebarTitle":"access_grants","href":"/modeling/models/access-grants"},{"title":"ai_chat_topics - Model files","sidebarTitle":"ai_chat_topics","href":"/modeling/models/ai-chat-topics"},{"title":"ai_context - Model files","sidebarTitle":"ai_context","href":"/modeling/models/ai-context"},{"group":"ai_settings","root":{"title":"ai_settings","sidebarTitle":"ai_settings","href":"/modeling/models/parameters/ai-settings/index"},"pages":[{"title":"allow_ctes - AI settings","sidebarTitle":"allow_ctes","href":"/modeling/models/parameters/ai-settings/allow-ctes"},{"title":"allow_custom_fields - AI settings","sidebarTitle":"allow_custom_fields","href":"/modeling/models/parameters/ai-settings/allow-custom-fields"},{"title":"analyze_configuration - AI settings","sidebarTitle":"analyze_configuration","tag":"deprecated","href":"/modeling/models/parameters/ai-settings/analyze-configuration"},{"title":"build_configuration - AI settings","sidebarTitle":"build_configuration","tag":"deprecated","href":"/modeling/models/parameters/ai-settings/build-configuration"},{"title":"conversation_prune_length - AI settings","sidebarTitle":"conversation_prune_length","href":"/modeling/models/parameters/ai-settings/conversation-prune-length"},{"title":"disabled_tools - AI settings","sidebarTitle":"disabled_tools","href":"/modeling/models/parameters/ai-settings/disabled-tools"},{"title":"query_all_views_and_fields - AI settings","sidebarTitle":"query_all_views_and_fields","href":"/modeling/models/parameters/ai-settings/query-all-views-and-fields"},{"title":"show_progress_narration - AI settings","sidebarTitle":"show_progress_narration","href":"/modeling/models/parameters/ai-settings/show-progress-narration"},{"title":"simple_summarize_configuration - AI settings","sidebarTitle":"simple_summarize_configuration","tag":"deprecated","href":"/modeling/models/parameters/ai-settings/simple-summarize-configuration"},{"title":"topic_prune_characters - AI settings","sidebarTitle":"topic_prune_characters","href":"/modeling/models/parameters/ai-settings/topic-prune-characters"},{"title":"validate_analysis - AI settings","sidebarTitle":"validate_analysis","href":"/modeling/models/parameters/ai-settings/validate-analysis"}]},{"title":"auto_run - Model files","sidebarTitle":"auto_run","href":"/modeling/models/auto-run"},{"title":"auto_run_dashboard - Model files","sidebarTitle":"auto_run_dashboard","href":"/modeling/models/auto-run-dashboard"},{"title":"cache_policies - Model files","sidebarTitle":"cache_policies","href":"/modeling/models/cache-policies"},{"title":"calcs_default_pushdown - Model files","sidebarTitle":"calcs_default_pushdown","href":"/modeling/models/calcs-default-pushdown"},{"title":"compute_routing - Model files","sidebarTitle":"compute_routing","href":"/modeling/models/compute-routing"},{"title":"constants - Model files","sidebarTitle":"constants","href":"/modeling/models/constants"},{"title":"custom_calendars - Model files","sidebarTitle":"custom_calendars","href":"/modeling/models/custom-calendars"},{"title":"custom_formats - Model files","sidebarTitle":"custom_formats","href":"/modeling/models/custom-formats"},{"title":"default_cache_policy - Model files","sidebarTitle":"default_cache_policy","href":"/modeling/models/default-cache-policy"},{"title":"default_custom_calendar - Model files","sidebarTitle":"default_custom_calendar","href":"/modeling/models/default-custom-calendar"},{"title":"default_group_by - Model files","sidebarTitle":"default_group_by","href":"/modeling/models/default-group-by"},{"title":"default_numeric_locale - Model files","sidebarTitle":"default_numeric_locale","href":"/modeling/models/default-numeric-locale"},{"title":"default_row_limit - Model files","sidebarTitle":"default_row_limit","href":"/modeling/models/default-row-limit"},{"title":"default_timeframes - Model files","sidebarTitle":"default_timeframes","href":"/modeling/models/default-timeframes"},{"title":"default_topic_access_filters - Model files","sidebarTitle":"default_topic_access_filters","href":"/modeling/models/default-topic-access-filters"},{"title":"default_topic_hidden_unless_access_grants - Model files","sidebarTitle":"default_topic_hidden_unless_access_grants","href":"/modeling/models/default-topic-hidden-unless-access-grants"},{"title":"default_topic_required_access_grants - Model files","sidebarTitle":"default_topic_required_access_grants","href":"/modeling/models/default-topic-required-access-grants"},{"title":"dynamic_schemas - Model files","sidebarTitle":"dynamic_schemas","href":"/modeling/models/dynamic-schemas"},{"title":"dynamic_shared_extensions - Model files","sidebarTitle":"dynamic_shared_extensions","href":"/modeling/models/dynamic-shared-extensions"},{"title":"extends - Model files","sidebarTitle":"extends","mode":"wide","href":"/modeling/models/extends"},{"title":"facet_workbook_filters - Model files","sidebarTitle":"facet_workbook_filters","href":"/modeling/models/facet-workbook-filters"},{"title":"fiscal_month_offset - Model files","sidebarTitle":"fiscal_month_offset","href":"/modeling/models/fiscal-month-offset"},{"title":"ignored_schemas - Model files","sidebarTitle":"ignored_schemas","href":"/modeling/models/ignored-schemas"},{"title":"ignored_views - Model files","sidebarTitle":"ignored_views","href":"/modeling/models/ignored-views"},{"title":"included_schemas - Model files","sidebarTitle":"included_schemas","mode":"wide","href":"/modeling/models/included-schemas"},{"title":"included_views - Model files","sidebarTitle":"included_views","mode":"wide","href":"/modeling/models/included-views"},{"title":"sample_queries - Model files","sidebarTitle":"sample_queries","href":"/modeling/models/sample-queries"},{"title":"sets - Model files","sidebarTitle":"sets","href":"/modeling/models/sets"},{"title":"skills - Model files","sidebarTitle":"skills","href":"/modeling/models/skills"},{"title":"slot_reservation - Model files","sidebarTitle":"slot_reservation","href":"/modeling/models/slot-reservation"},{"title":"sql_preamble - Model files","sidebarTitle":"sql_preamble","href":"/modeling/models/sql-preamble"},{"title":"template - Model files","sidebarTitle":"template","href":"/modeling/models/template"},{"title":"topic_group_descriptions - Model files","sidebarTitle":"topic_group_descriptions","href":"/modeling/models/topic-group-descriptions"},{"title":"topics - Model files","sidebarTitle":"topics","href":"/modeling/models/topics"},{"title":"warehouse_override - Model files","sidebarTitle":"warehouse_override","href":"/modeling/models/warehouse-override"},{"title":"week_start_day - Model files","sidebarTitle":"week_start_day","href":"/modeling/models/week-start-day"}]}]},{"group":"Topics","root":{"title":"Curating datasets with topics","sidebarTitle":"Overview","href":"/modeling/topics/index"},"pages":[{"title":"Creating topics","sidebarTitle":"Create topics","href":"/modeling/topics/setup"},{"title":"Creating topics with AI quickstart","sidebarTitle":"Create topics with AI","href":"/modeling/topics/quickstart"},{"title":"Topic best practices","sidebarTitle":"Best practices","href":"/modeling/topics/best-practices"},{"title":"Topic design inspiration","sidebarTitle":"Examples","href":"/modeling/topics/examples"},{"group":"Parameters","pages":[{"title":"Topic file parameters","sidebarTitle":"All parameters","href":"/modeling/topics/parameters/index"},{"title":"access_filters - Topics","sidebarTitle":"access_filters","href":"/modeling/topics/parameters/access-filters"},{"title":"ai_context - Topics","sidebarTitle":"ai_context","href":"/modeling/topics/parameters/ai-context"},{"title":"ai_fields - Topics","sidebarTitle":"ai_fields","href":"/modeling/topics/parameters/ai-fields"},{"title":"ai_prune_characters - Topics","sidebarTitle":"ai_prune_characters","href":"/modeling/topics/parameters/ai-prune-characters"},{"title":"always_having_filters - Topics","sidebarTitle":"always_having_filters","href":"/modeling/topics/parameters/always-having-filters"},{"title":"always_having_sql - Topics","sidebarTitle":"always_having_sql","href":"/modeling/topics/parameters/always-having-sql"},{"title":"always_where_filters - Topics","sidebarTitle":"always_where_filters","href":"/modeling/topics/parameters/always-where-filters"},{"title":"always_where_sql - Topics","sidebarTitle":"always_where_sql","href":"/modeling/topics/parameters/always-where-sql"},{"title":"auto_run - Topics","sidebarTitle":"auto_run","href":"/modeling/topics/parameters/auto-run"},{"title":"base_view - Topics","sidebarTitle":"base_view","href":"/modeling/topics/parameters/base-view"},{"title":"base_view_label - Topics","sidebarTitle":"base_view_label","href":"/modeling/topics/parameters/base-view-label"},{"title":"cache_policy - Topics","sidebarTitle":"cache_policy","href":"/modeling/topics/parameters/cache-policy"},{"title":"default_filters - Topics","sidebarTitle":"default_filters","href":"/modeling/topics/parameters/default-filters"},{"title":"default_row_limit - Topics","sidebarTitle":"default_row_limit","href":"/modeling/topics/parameters/default-row-limit"},{"title":"description - Topics","sidebarTitle":"description","href":"/modeling/topics/parameters/description"},{"title":"display_order - Topics","sidebarTitle":"display_order","href":"/modeling/topics/parameters/display-order"},{"title":"extends - Topics","sidebarTitle":"extends","href":"/modeling/topics/parameters/extends"},{"title":"fields - Topics","sidebarTitle":"fields","href":"/modeling/topics/parameters/fields"},{"title":"group_label - Topics","sidebarTitle":"group_label","href":"/modeling/topics/parameters/group-label"},{"title":"hidden - Topics","sidebarTitle":"hidden","href":"/modeling/topics/parameters/hidden"},{"title":"hidden_unless_access_grants - Topics","sidebarTitle":"hidden_unless_access_grants","href":"/modeling/topics/parameters/hidden-unless-access-grants"},{"title":"joins - Topics","sidebarTitle":"joins","href":"/modeling/topics/parameters/joins"},{"title":"label - Topics","sidebarTitle":"label","href":"/modeling/topics/parameters/label"},{"title":"owners - Topics","sidebarTitle":"owners","href":"/modeling/topics/parameters/owners"},{"title":"relationships - Topics","sidebarTitle":"relationships","href":"/modeling/topics/parameters/relationships"},{"title":"required_access_grants - Topics","sidebarTitle":"required_access_grants","href":"/modeling/topics/parameters/required-access-grants"},{"title":"sample_queries - Topics","sidebarTitle":"sample_queries","href":"/modeling/topics/parameters/sample-queries"},{"title":"skills - Topics","sidebarTitle":"skills","href":"/modeling/topics/parameters/skills"},{"title":"tags - Topics","sidebarTitle":"tags","href":"/modeling/topics/parameters/tags"},{"title":"template - Topics","sidebarTitle":"template","href":"/modeling/topics/parameters/template"},{"title":"views - Topics","sidebarTitle":"views","href":"/modeling/topics/parameters/views"},{"title":"warehouse_override - Topics","sidebarTitle":"warehouse_override","href":"/modeling/topics/parameters/warehouse-override"},{"title":"week_start_day - Topics","sidebarTitle":"week_start_day","href":"/modeling/topics/parameters/week-start-day"}]}]},{"group":"Composite topics","root":{"title":"Composite topics","sidebarTitle":"Overview","href":"/modeling/composite-topics/index"},"pages":[{"title":"Create a composite topic","sidebarTitle":"Create composite topics","href":"/modeling/composite-topics/create"},{"title":"Composite topic examples","sidebarTitle":"Examples","href":"/modeling/composite-topics/examples"},{"group":"Parameters","root":{"title":"Composite topic parameters","sidebarTitle":"All parameters","href":"/modeling/composite-topics/parameters/index"},"pages":[{"title":"ai_context - Composite topics","sidebarTitle":"ai_context","href":"/modeling/composite-topics/parameters/ai-context"},{"title":"always_join_all_topics - Composite topics","sidebarTitle":"always_join_all_topics","href":"/modeling/composite-topics/parameters/always-join-all-topics"},{"title":"cache_policy - Composite topics","sidebarTitle":"cache_policy","href":"/modeling/composite-topics/parameters/cache-policy"},{"title":"default_filters - Composite topics","sidebarTitle":"default_filters","href":"/modeling/composite-topics/parameters/default-filters"},{"title":"description - Composite topics","sidebarTitle":"description","href":"/modeling/composite-topics/parameters/description"},{"title":"display_order - Composite topics","sidebarTitle":"display_order","href":"/modeling/composite-topics/parameters/display-order"},{"title":"fields - Composite topics","sidebarTitle":"fields","href":"/modeling/composite-topics/parameters/fields"},{"title":"hidden - Composite topics","sidebarTitle":"hidden","href":"/modeling/composite-topics/parameters/hidden"},{"title":"hidden_unless_access_grants - Composite topics","sidebarTitle":"hidden_unless_access_grants","href":"/modeling/composite-topics/parameters/hidden-unless-access-grants"},{"title":"label - Composite topics","sidebarTitle":"label","href":"/modeling/composite-topics/parameters/label"},{"title":"required_access_grants - Composite topics","sidebarTitle":"required_access_grants","href":"/modeling/composite-topics/parameters/required-access-grants"},{"title":"sample_queries - Composite topics","sidebarTitle":"sample_queries","href":"/modeling/composite-topics/parameters/sample-queries"},{"title":"shared_dimensions - Composite topics","sidebarTitle":"shared_dimensions","href":"/modeling/composite-topics/parameters/shared-dimensions"},{"title":"shared_measures - Composite topics","sidebarTitle":"shared_measures","href":"/modeling/composite-topics/parameters/shared-measures"},{"title":"shared_views - Composite topics","sidebarTitle":"shared_views","href":"/modeling/composite-topics/parameters/shared-views"},{"title":"tags - Composite topics","sidebarTitle":"tags","href":"/modeling/composite-topics/parameters/tags"},{"title":"topics - Composite topics","sidebarTitle":"topics","href":"/modeling/composite-topics/parameters/topics"},{"title":"unrelated_dimension_handling - Composite topics","sidebarTitle":"unrelated_dimension_handling","href":"/modeling/composite-topics/parameters/unrelated-dimension-handling"}]}]},{"group":"Views","root":{"title":"Working with views","sidebarTitle":"Overview","href":"/modeling/views/index"},"pages":[{"title":"Editing database views","sidebarTitle":"Edit views","href":"/modeling/views/edit"},{"title":"Aliasing views","sidebarTitle":"Aliasing","href":"/modeling/views/alias"},{"group":"Parameters","root":{"title":"All View file parameters","sidebarTitle":"All parameters","mode":"wide","href":"/modeling/views/parameters/index"},"pages":[{"title":"ai_context - Views","sidebarTitle":"ai_context","href":"/modeling/views/parameters/ai-context"},{"title":"aliases - Views","sidebarTitle":"aliases","href":"/modeling/views/parameters/aliases"},{"title":"catalog - Views","sidebarTitle":"catalog","href":"/modeling/views/parameters/catalog"},{"title":"custom_compound_primary_key_sql - Views","sidebarTitle":"custom_compound_primary_key_sql","href":"/modeling/views/parameters/custom-compound-primary-key-sql"},{"title":"default_drill_fields - Views","sidebarTitle":"default_drill_fields","href":"/modeling/views/parameters/default-drill-fields"},{"title":"default_drill_query - Views","sidebarTitle":"default_drill_query","href":"/modeling/views/parameters/default-drill-query"},{"title":"description - Views","sidebarTitle":"description","href":"/modeling/views/parameters/description"},{"title":"display_order - Views","sidebarTitle":"display_order","href":"/modeling/views/parameters/display-order"},{"title":"extends - Views","sidebarTitle":"extends","href":"/modeling/views/parameters/extends"},{"title":"fill_fields - Views","sidebarTitle":"fill_fields","href":"/modeling/views/parameters/fill-fields"},{"title":"folder - Views","sidebarTitle":"folder","href":"/modeling/views/parameters/folder"},{"title":"hidden - Views","sidebarTitle":"hidden","href":"/modeling/views/parameters/hidden"},{"title":"ignored - Views","sidebarTitle":"ignored","href":"/modeling/views/parameters/ignored"},{"title":"ignored_props - Views","sidebarTitle":"ignored_props","href":"/modeling/views/parameters/ignored-props"},{"title":"label - Views","sidebarTitle":"label","href":"/modeling/views/parameters/label"},{"title":"materialized_query - Views","sidebarTitle":"materialized_query","href":"/modeling/views/parameters/materialized-query"},{"title":"name - Views","sidebarTitle":"name","href":"/modeling/views/parameters/name"},{"title":"query - Views","sidebarTitle":"query","href":"/modeling/views/parameters/query"},{"title":"required_access_grants - Views","sidebarTitle":"required_access_grants","href":"/modeling/views/parameters/required-access-grants"},{"title":"schema - Views","sidebarTitle":"schema","href":"/modeling/views/parameters/schema"},{"title":"schema_label - Views","sidebarTitle":"schema_label","href":"/modeling/views/parameters/schema-label"},{"title":"sql - Views","sidebarTitle":"sql","href":"/modeling/views/parameters/sql"},{"title":"table_name - Views","sidebarTitle":"table_name","href":"/modeling/views/parameters/table-name"},{"title":"tags - Views","sidebarTitle":"tags","href":"/modeling/views/parameters/tags"},{"title":"template - Views","sidebarTitle":"template","href":"/modeling/views/parameters/template"},{"title":"uploaded_table_name - Views","sidebarTitle":"uploaded_table_name","href":"/modeling/views/parameters/uploaded-table-name"}]}]},{"group":"Query views","root":{"title":"Configuring query views","sidebarTitle":"Overview","href":"/modeling/query-views/index"},"pages":[{"title":"Editing query views","sidebarTitle":"Edit query views","href":"/modeling/query-views/edit"},{"group":"Parameters","root":{"title":"Query view parameters","sidebarTitle":"All parameters","href":"/modeling/query-views/parameters/index"},"pages":[{"title":"ai_context - Query views","sidebarTitle":"ai_context","href":"/modeling/query-views/parameters/ai-context"},{"title":"base_view - Query views","sidebarTitle":"base_view","href":"/modeling/query-views/parameters/base-view"},{"title":"description - Query views","sidebarTitle":"description","href":"/modeling/query-views/parameters/description"},{"title":"display_order - Query views","sidebarTitle":"display_order","href":"/modeling/query-views/parameters/display-order"},{"title":"dimensions - Query views","sidebarTitle":"dimensions","href":"/modeling/query-views/parameters/dimensions"},{"title":"hidden - Query views","sidebarTitle":"hidden","href":"/modeling/query-views/parameters/hidden"},{"title":"ignored - Query views","sidebarTitle":"ignored","href":"/modeling/query-views/parameters/ignored"},{"title":"label - Query views","sidebarTitle":"label","href":"/modeling/query-views/parameters/label"},{"title":"measures - Query views","sidebarTitle":"measures","href":"/modeling/query-views/parameters/measures"},{"group":"query","root":{"title":"query - Query views","sidebarTitle":"query","href":"/modeling/query-views/parameters/query"},"pages":[{"title":"bind - Query views","sidebarTitle":"bind","href":"/modeling/query-views/parameters/bind"},{"title":"bind_all_filters - Query views","sidebarTitle":"bind_all_filters","href":"/modeling/query-views/parameters/bind-all-filters"},{"title":"bind_outer_context - Query views","sidebarTitle":"bind_outer_context","href":"/modeling/query-views/parameters/bind-outer-context"},{"title":"calculations - Query views","sidebarTitle":"calculations","href":"/modeling/query-views/parameters/calculations"},{"title":"default_group_by - Query views","sidebarTitle":"default_group_by","href":"/modeling/query-views/parameters/default-group-by"},{"title":"fields - Query views","sidebarTitle":"fields","href":"/modeling/query-views/parameters/fields"},{"title":"fill_fields - Query views","sidebarTitle":"fill_fields","href":"/modeling/query-views/parameters/fill-fields"},{"title":"filters - Query views","sidebarTitle":"filters","href":"/modeling/query-views/parameters/filters"},{"title":"join_via_map - Query views","sidebarTitle":"join_via_map","href":"/modeling/query-views/parameters/join-via-map"},{"title":"limit - Query views","sidebarTitle":"limit","href":"/modeling/query-views/parameters/limit"},{"title":"sorts - Query views","sidebarTitle":"sorts","href":"/modeling/query-views/parameters/sorts"},{"title":"topic - Query views","sidebarTitle":"topic","href":"/modeling/query-views/parameters/topic"}]},{"title":"schema - Query views","sidebarTitle":"schema","href":"/modeling/query-views/parameters/schema"},{"title":"sql - Query views","sidebarTitle":"sql","href":"/modeling/query-views/parameters/sql"},{"title":"tags - Query views","sidebarTitle":"tags","href":"/modeling/query-views/parameters/tags"}]}]},{"group":"Measures","root":{"title":"Measures","sidebarTitle":"Overview","href":"/modeling/measures/index"},"pages":[{"group":"Parameters","root":{"title":"Measure parameters","sidebarTitle":"All parameters","href":"/modeling/measures/parameters/index"},"pages":[{"title":"aggregate_type - Measures","sidebarTitle":"aggregate_type","href":"/modeling/measures/parameters/aggregate-type"},{"title":"ai_context - Measures","sidebarTitle":"ai_context","href":"/modeling/measures/parameters/ai-context"},{"title":"aliases - Measures","sidebarTitle":"aliases","href":"/modeling/measures/parameters/aliases"},{"title":"all_values - Measures","sidebarTitle":"all_values","href":"/modeling/measures/parameters/all-values"},{"title":"colors - Measures","sidebarTitle":"colors","href":"/modeling/measures/parameters/colors"},{"title":"custom_primary_key_sql - Measures","sidebarTitle":"custom_primary_key_sql","href":"/modeling/measures/parameters/custom-primary-key-sql"},{"title":"description - Measures","sidebarTitle":"description","href":"/modeling/measures/parameters/description"},{"title":"display_order - Measures","sidebarTitle":"display_order","href":"/modeling/measures/parameters/display-order"},{"title":"drill_fields - Measures","sidebarTitle":"drill_fields","href":"/modeling/measures/parameters/drill-fields"},{"title":"drill_queries - Measures","sidebarTitle":"drill_queries","href":"/modeling/measures/parameters/drill-queries"},{"title":"filters - Measures","sidebarTitle":"filters","href":"/modeling/measures/parameters/filters"},{"title":"format - Measures","sidebarTitle":"format","href":"/modeling/measures/parameters/format"},{"title":"group_label - Measures","sidebarTitle":"group_label","href":"/modeling/measures/parameters/group-label"},{"title":"hidden - Measures","sidebarTitle":"hidden","href":"/modeling/measures/parameters/hidden"},{"title":"ignored - Measures","sidebarTitle":"ignored","href":"/modeling/measures/parameters/ignored"},{"title":"ignored_props - Measures","sidebarTitle":"ignored_props","href":"/modeling/measures/parameters/ignored-props"},{"title":"label - Measures","sidebarTitle":"label","href":"/modeling/measures/parameters/label"},{"title":"level_of_detail - Measures","sidebarTitle":"level_of_detail","href":"/modeling/measures/parameters/level-of-detail"},{"title":"links - Measures","sidebarTitle":"links","href":"/modeling/measures/parameters/links"},{"title":"markdown - Measures","sidebarTitle":"markdown","href":"/modeling/measures/parameters/markdown"},{"title":"null_display - Measures","sidebarTitle":"null_display","href":"/modeling/measures/parameters/null-display"},{"title":"required_access_grants - Measures","sidebarTitle":"required_access_grants","href":"/modeling/measures/parameters/required-access-grants"},{"title":"required_fields - Measures","sidebarTitle":"required_fields","href":"/modeling/measures/parameters/required-fields"},{"title":"sample_values - Measures","sidebarTitle":"sample_values","href":"/modeling/measures/parameters/sample-values"},{"title":"sql - Measures","sidebarTitle":"sql","href":"/modeling/measures/parameters/sql"},{"title":"suggest_from_field - Measures","sidebarTitle":"suggest_from_field","href":"/modeling/measures/parameters/suggest-from-field"},{"title":"suggestion_list - Measures","sidebarTitle":"suggestion_list","href":"/modeling/measures/parameters/suggestion-list"},{"title":"synonyms - Measures","sidebarTitle":"synonyms","href":"/modeling/measures/parameters/synonyms"},{"title":"tags - Measures","sidebarTitle":"tags","href":"/modeling/measures/parameters/tags"},{"title":"view_label - Measures","sidebarTitle":"view_label","href":"/modeling/measures/parameters/view-label"}]}]},{"group":"Dimensions","root":{"title":"Dimensions","sidebarTitle":"Overview","href":"/modeling/dimensions/index"},"pages":[{"group":"Parameters","root":{"title":"All dimension parameters","sidebarTitle":"All parameters","href":"/modeling/dimensions/parameters/index"},"pages":[{"title":"ai_context - Dimensions","sidebarTitle":"ai_context","href":"/modeling/dimensions/parameters/ai-context"},{"title":"aliases - Dimensions","sidebarTitle":"aliases","href":"/modeling/dimensions/parameters/aliases"},{"title":"all_values - Dimensions","sidebarTitle":"all_values","href":"/modeling/dimensions/parameters/all-values"},{"title":"bin_boundaries - Dimensions","sidebarTitle":"bin_boundaries","href":"/modeling/dimensions/parameters/bin-boundaries"},{"title":"colors - Dimensions","sidebarTitle":"colors","href":"/modeling/dimensions/parameters/colors"},{"title":"convert_tz - Dimensions","sidebarTitle":"convert_tz","href":"/modeling/dimensions/parameters/convert-tz"},{"title":"custom_calendar - Dimensions","sidebarTitle":"custom_calendar","href":"/modeling/dimensions/parameters/custom-calendar"},{"title":"custom_primary_key_sql_for_quick_aggs - Dimensions","sidebarTitle":"custom_primary_key_sql_for_quick_aggs","href":"/modeling/dimensions/parameters/custom-primary-key-sql-for-quick-aggs"},{"title":"description - Dimensions","sidebarTitle":"description","href":"/modeling/dimensions/parameters/description"},{"title":"display_order - Dimensions","sidebarTitle":"display_order","href":"/modeling/dimensions/parameters/display-order"},{"title":"duration - Dimensions","sidebarTitle":"duration","href":"/modeling/dimensions/parameters/duration"},{"title":"dynamic_top_n - Dimensions","sidebarTitle":"dynamic_top_n","href":"/modeling/dimensions/parameters/dynamic-top-n"},{"title":"drill_fields - Dimensions","sidebarTitle":"drill_fields","href":"/modeling/dimensions/parameters/drill-fields"},{"title":"extends - Dimensions","sidebarTitle":"extends","href":"/modeling/dimensions/parameters/extends"},{"title":"faceting - Dimensions","sidebarTitle":"faceting","href":"/modeling/dimensions/parameters/faceting"},{"title":"filter_single_select_only - Dimensions","sidebarTitle":"filter_single_select_only","href":"/modeling/dimensions/parameters/filter-single-select-only"},{"title":"format - Dimensions","sidebarTitle":"format","href":"/modeling/dimensions/parameters/format"},{"title":"group_label - Dimensions","sidebarTitle":"group_label","href":"/modeling/dimensions/parameters/group-label"},{"title":"groups - Dimensions","sidebarTitle":"groups","href":"/modeling/dimensions/parameters/groups"},{"title":"hidden - Dimensions","sidebarTitle":"hidden","href":"/modeling/dimensions/parameters/hidden"},{"title":"ignore_from_extended - Dimensions","sidebarTitle":"ignore_from_extended","href":"/modeling/dimensions/parameters/ignore-from-extended"},{"title":"ignored - Dimensions","sidebarTitle":"ignored","href":"/modeling/dimensions/parameters/ignored"},{"title":"ignored_props - Dimensions","sidebarTitle":"ignored_props","href":"/modeling/dimensions/parameters/ignored-props"},{"title":"label - Dimensions","sidebarTitle":"label","href":"/modeling/dimensions/parameters/label"},{"title":"level_of_detail - Dimensions","sidebarTitle":"level_of_detail","href":"/modeling/dimensions/parameters/level-of-detail"},{"title":"links - Dimensions","sidebarTitle":"links","href":"/modeling/dimensions/parameters/links"},{"title":"markdown - Dimensions","sidebarTitle":"markdown","href":"/modeling/dimensions/parameters/markdown"},{"title":"mask_unless_access_grants - Dimensions","sidebarTitle":"mask_unless_access_grants","href":"/modeling/dimensions/parameters/mask-unless-access-grants"},{"title":"null_display - Dimensions","sidebarTitle":"null_display","href":"/modeling/dimensions/parameters/null-display"},{"title":"order_by_field - Dimensions","sidebarTitle":"order_by_field","href":"/modeling/dimensions/parameters/order-by-field"},{"title":"parent_field - Dimensions","sidebarTitle":"parent_field","href":"/modeling/dimensions/parameters/parent-field"},{"title":"primary_key - Dimensions","sidebarTitle":"primary_key","href":"/modeling/dimensions/parameters/primary-key"},{"title":"required_access_grants - Dimensions","sidebarTitle":"required_access_grants","href":"/modeling/dimensions/parameters/required-access-grants"},{"title":"sample_values - Dimensions","sidebarTitle":"sample_values","href":"/modeling/dimensions/parameters/sample-values"},{"title":"skip_parent_label - Dimensions","sidebarTitle":"skip_parent_label","href":"/modeling/dimensions/parameters/skip-parent-label"},{"title":"sql - Dimensions","sidebarTitle":"sql","href":"/modeling/dimensions/parameters/sql"},{"title":"suggest_from_field - Dimensions","sidebarTitle":"suggest_from_field","href":"/modeling/dimensions/parameters/suggest-from-field"},{"title":"suggest_from_topic - Dimensions","sidebarTitle":"suggest_from_topic","href":"/modeling/dimensions/parameters/suggest-from-topic"},{"title":"suggestion_list - Dimensions","sidebarTitle":"suggestion_list","href":"/modeling/dimensions/parameters/suggestion-list"},{"title":"synonyms - Dimensions","sidebarTitle":"synonyms","href":"/modeling/dimensions/parameters/synonyms"},{"title":"tags - Dimensions","sidebarTitle":"tags","href":"/modeling/dimensions/parameters/tags"},{"title":"timeframes - Dimensions","sidebarTitle":"timeframes","href":"/modeling/dimensions/parameters/timeframes"},{"title":"view_label - Dimensions","sidebarTitle":"view_label","href":"/modeling/dimensions/parameters/view-label"},{"title":"week_start_day - Dimensions","sidebarTitle":"week_start_day","href":"/modeling/dimensions/parameters/week-start-day"}]}]},{"group":"Joins","root":{"title":"Relationships and joins","sidebarTitle":"Overview","href":"/modeling/relationships/index"},"pages":[{"title":"Creating table joins","sidebarTitle":"Build table joins","href":"/modeling/relationships/build"},{"group":"Parameters","root":{"title":"Relationship file parameters","sidebarTitle":"All parameters","href":"/modeling/relationships/parameters/index"},"pages":[{"title":"id - Relationships","sidebarTitle":"id","href":"/modeling/relationships/parameters/id"},{"title":"join_from_view - Relationships","sidebarTitle":"join_from_view","href":"/modeling/relationships/parameters/join-from-view"},{"title":"join_from_view_as - Relationships","sidebarTitle":"join_from_view_as","href":"/modeling/relationships/parameters/join-from-view-as"},{"title":"join_from_view_as_label - Relationships","sidebarTitle":"join_from_view_as_label","href":"/modeling/relationships/parameters/join-from-view-as-label"},{"title":"join_to_view - Relationships","sidebarTitle":"join_to_view","href":"/modeling/relationships/parameters/join-to-view"},{"title":"join_to_view_as - Relationships","sidebarTitle":"join_to_view_as","href":"/modeling/relationships/parameters/join-to-view-as"},{"title":"join_to_view_as_label - Relationships","sidebarTitle":"join_to_view_as_label","href":"/modeling/relationships/parameters/join-to-view-as-label"},{"title":"join_type - Relationships","sidebarTitle":"join_type","href":"/modeling/relationships/parameters/join-type"},{"title":"on_sql - Relationships","sidebarTitle":"on_sql","href":"/modeling/relationships/parameters/on-sql"},{"title":"relationship_type - Relationships","sidebarTitle":"relationship_type","href":"/modeling/relationships/parameters/relationship-type"},{"title":"reversible - Relationships","sidebarTitle":"reversible","href":"/modeling/relationships/parameters/reversible"},{"title":"where_sql - Relationships","sidebarTitle":"where_sql","href":"/modeling/relationships/parameters/where-sql"}]}]},{"group":"Filters","root":{"title":"Filter syntax","sidebarTitle":"Syntax","href":"/modeling/filters/index"},"pages":[{"title":"Filter examples","sidebarTitle":"Examples","href":"/modeling/filters/examples"},{"group":"Operators","root":{"title":"Filter operators","sidebarTitle":"All operators","href":"/modeling/filters/operators/index"},"pages":[{"group":"Conditional","pages":[{"title":"and - Filter operators","sidebarTitle":"and","href":"/modeling/filters/operators/and"},{"title":"is - Filter operators","sidebarTitle":"is","href":"/modeling/filters/operators/is"},{"title":"not - Filter operators","sidebarTitle":"not","href":"/modeling/filters/operators/not"},{"title":"or - Filter operators","sidebarTitle":"or","href":"/modeling/filters/operators/or"}]},{"group":"Advanced","pages":[{"title":"cancel_query_filter - Filter operators","sidebarTitle":"cancel_query_filter","href":"/modeling/filters/operators/cancel-query-filter"},{"title":"exclude_from_bind_all - Filter operators","sidebarTitle":"exclude_from_bind_all","href":"/modeling/filters/operators/exclude-from-bind-all"},{"title":"exclude_from_level_of_detail - Filter operators","sidebarTitle":"exclude_from_level_of_detail","href":"/modeling/filters/operators/exclude-from-level-of-detail"},{"title":"field_name_in_query - Filter operators","sidebarTitle":"field_name_in_query","href":"/modeling/filters/operators/field-name-in-query"},{"title":"field_name_not_in_query - Filter operators","sidebarTitle":"field_name_not_in_query","href":"/modeling/filters/operators/field-name-not-in-query"},{"title":"required - Filter operators","sidebarTitle":"required","href":"/modeling/filters/operators/required"}]},{"group":"Date \u0026 time","pages":[{"title":"before - Filter operators","sidebarTitle":"before","href":"/modeling/filters/operators/before"},{"title":"between_dates - Filter operators","sidebarTitle":"between_dates","href":"/modeling/filters/operators/between-dates"},{"title":"date_offset_from_query - Filter operators","sidebarTitle":"date_offset_from_query","href":"/modeling/filters/operators/date-offset-from-query"},{"title":"day_of_month - Filter operators","sidebarTitle":"day_of_month","href":"/modeling/filters/operators/day-of-month"},{"title":"day_of_quarter - Filter operators","sidebarTitle":"day_of_quarter","href":"/modeling/filters/operators/day-of-quarter"},{"title":"day_of_week - Filter operators","sidebarTitle":"day_of_week","href":"/modeling/filters/operators/day-of-week"},{"title":"day_of_year - Filter operators","sidebarTitle":"day_of_year","href":"/modeling/filters/operators/day-of-year"},{"title":"hour_of_day - Filter operators","sidebarTitle":"hour_of_day","href":"/modeling/filters/operators/hour-of-day"},{"title":"month_of_year - Filter operators","sidebarTitle":"month_of_year","href":"/modeling/filters/operators/month-of-year"},{"title":"on_or_after - Filter operators","sidebarTitle":"on_or_after","href":"/modeling/filters/operators/on-or-after"},{"title":"quarter_of_year - Filter operators","sidebarTitle":"quarter_of_year","href":"/modeling/filters/operators/quarter-of-year"},{"title":"time_for_duration - Filter operators","sidebarTitle":"time_for_duration","href":"/modeling/filters/operators/time-for-duration"}]},{"group":"Number","pages":[{"title":"between - Filter operators","sidebarTitle":"between","href":"/modeling/filters/operators/between"},{"title":"greater_than - Filter operators","sidebarTitle":"greater_than","href":"/modeling/filters/operators/greater-than"},{"title":"greater_than_or_equal_to - Filter operators","sidebarTitle":"greater_than_or_equal_to","href":"/modeling/filters/operators/greater-than-or-equal-to"},{"title":"less_than - Filter operators","sidebarTitle":"less_than","href":"/modeling/filters/operators/less-than"},{"title":"less_than_or_equal_to - Filter operators","sidebarTitle":"less_than_or_equal_to","href":"/modeling/filters/operators/less-than-or-equal-to"}]},{"group":"Text","pages":[{"title":"case_insensitive - Filter operators","sidebarTitle":"case_insensitive","href":"/modeling/filters/operators/case-insensitive"},{"title":"contains - Filter operators","sidebarTitle":"contains","href":"/modeling/filters/operators/contains"},{"title":"ends_with - Filter operators","sidebarTitle":"ends_with","href":"/modeling/filters/operators/ends-with"},{"title":"is_empty - Filter operators","sidebarTitle":"is_empty","href":"/modeling/filters/operators/is-empty"},{"title":"starts_with - Filter operators","sidebarTitle":"starts_with","href":"/modeling/filters/operators/starts-with"},{"title":"sql_like - Filter operators","sidebarTitle":"sql_like","href":"/modeling/filters/operators/sql-like"}]}]}]},{"title":"Templated filters","sidebarTitle":"Parameterizing filters","href":"/modeling/templated-filters/index"}]},{"group":"Manage integrations","icon":"engine","pages":[{"group":"dbt","pages":[{"title":"Getting started with dbt","sidebarTitle":"Getting started","href":"/integrations/dbt/index"},{"group":"Connect Git","root":{"title":"Connecting a dbt Git repository to Omni","sidebarTitle":"Overview","href":"/integrations/dbt/setup/index"},"pages":[{"title":"Connecting an Azure DevOps dbt repository to Omni","sidebarTitle":"Azure DevOps","description":"Connect your Azure DevOps dbt repository to Omni.","href":"/integrations/dbt/setup/azure-devops"},{"title":"Connecting a GitHub dbt repository to Omni","sidebarTitle":"GitHub","href":"/integrations/dbt/setup/github"},{"title":"Connecting a Gitlab dbt repository to Omni","sidebarTitle":"Gitlab","description":"Connect your Gitlab dbt repository to Omni.","href":"/integrations/dbt/setup/gitlab"}]},{"title":"Connecting dbt platform","sidebarTitle":"Connect dbt platform","href":"/integrations/dbt/dbt-platform"},{"group":"Sync from dbt","pages":[{"title":"Triggering dbt syncs in Omni","sidebarTitle":"Trigger syncs","href":"/integrations/dbt/syncing-dbt"},{"title":"Integrating dbt's semantic layer with Omni","sidebarTitle":"Integrate dbt's semantic layer","href":"/integrations/dbt/semantic-layer"},{"title":"dbt metadata reference","sidebarTitle":"Metadata reference","href":"/integrations/dbt/metadata-reference"},{"title":"Debugging dbt sync issues","sidebarTitle":"Troubleshooting","href":"/integrations/dbt/debugging-sync-issues"}]},{"group":"Push to dbt","pages":[{"title":"Pushing descriptions to dbt","sidebarTitle":"Push descriptions","href":"/integrations/dbt/push-descriptions"},{"title":"Pushing exposures to dbt","sidebarTitle":"Push exposures","href":"/integrations/dbt/exposures"}]},{"group":"Develop in Omni","pages":[{"title":"Configuring dbt environments in Omni","sidebarTitle":"Configure environments","href":"/integrations/dbt/environments"},{"title":"Swapping dbt environments with virtual schemas","sidebarTitle":"Swap environments","href":"/integrations/dbt/virtual-schemas"},{"title":"Authoring dbt models in Omni","sidebarTitle":"Author models","href":"/integrations/dbt/models"},{"title":"Working with dbt and Git","sidebarTitle":"Work with Git","href":"/integrations/dbt/git-workflows"}]}]},{"group":"git","root":{"title":"Integrate git for model version control","sidebarTitle":"Overview","href":"/integrations/git/index"},"pages":[{"group":"Setup","root":{"title":"Setting up the git integration","sidebarTitle":"Overview","href":"/integrations/git/setup/index"},"pages":[{"title":"Connect an Azure DevOps repository to Omni","sidebarTitle":"Azure DevOps","href":"/integrations/git/setup/azure-devops"},{"title":"Connect a Bitbucket Cloud repository to Omni","sidebarTitle":"Bitbucket Cloud","href":"/integrations/git/setup/bitbucket-cloud"},{"title":"Connect a Bitbucket Data Center/Server repository to Omni","sidebarTitle":"Bitbucket Data Center/Server","href":"/integrations/git/setup/bitbucket-data-center"},{"title":"Connect a GitHub repository to Omni","sidebarTitle":"GitHub","href":"/integrations/git/setup/github"},{"title":"Connect a GitLab repository to Omni","sidebarTitle":"GitLab","href":"/integrations/git/setup/gitlab"}]},{"title":"Git integration best practices","sidebarTitle":"Best practices","href":"/integrations/git/best-practices"},{"group":"Follower mode","root":{"title":"git follower mode","sidebarTitle":"Overview","href":"/integrations/git/follower-mode/index"},"pages":[{"title":"Configuring git follower mode","sidebarTitle":"Configure follower mode","href":"/integrations/git/follower-mode/setup"},{"title":"git follower mode best practices","sidebarTitle":"Follower mode best practices","href":"/integrations/git/follower-mode/best-practices"}]},{"group":"Content in git","root":{"title":"Content in git","sidebarTitle":"Overview","href":"/integrations/git/content/index"},"pages":[{"title":"Syncing content to git","sidebarTitle":"Sync to git","href":"/integrations/git/content/sync-to-git"},{"title":"Repository structure for content in git","sidebarTitle":"Repository structure","href":"/integrations/git/content/repository-structure"},{"title":"Troubleshooting content in git","sidebarTitle":"Troubleshooting","href":"/integrations/git/content/troubleshooting"}]},{"title":"Configuring git integration settings","sidebarTitle":"Settings","href":"/integrations/git/settings"},{"title":"Webhook deliveries","sidebarTitle":"Webhook Deliveries","href":"/integrations/git/webhook-deliveries"},{"title":"Troubleshooting the Git integration","sidebarTitle":"Troubleshooting","href":"/integrations/git/troubleshooting"}]},{"group":"MCP Server","root":{"title":"AI MCP Server","sidebarTitle":"Overview","href":"/ai/mcp/index"},"pages":[{"title":"MCP authentication","sidebarTitle":"Authentication","href":"/ai/mcp/authentication"},{"title":"MCP server tools","sidebarTitle":"Tools","href":"/ai/mcp/tools"},{"group":"Setup","pages":[{"title":"Using the MCP Server in ChatGPT","sidebarTitle":"ChatGPT","href":"/ai/mcp/chatgpt"},{"title":"Using the MCP Server in Claude Code","sidebarTitle":"Claude Code","href":"/ai/mcp/claude-code"},{"title":"Using the MCP Server in Claude Desktop","sidebarTitle":"Claude Desktop","href":"/ai/mcp/claude-desktop"},{"title":"Using the MCP Server in Codex","sidebarTitle":"Codex","href":"/ai/mcp/codex"},{"title":"Using the MCP Server in Cursor","sidebarTitle":"Cursor","href":"/ai/mcp/cursor"},{"title":"Using the MCP Server in Microsoft Copilot","sidebarTitle":"Microsoft Copilot","href":"/ai/mcp/microsoft-copilot"},{"title":"Using the MCP Server in Visual Studio Code","sidebarTitle":"VS Code","href":"/ai/mcp/vscode"}]}]},{"title":"Omni Slack Agent","sidebarTitle":"Omni Slack Agent","href":"/integrations/omni-slack-agent"},{"group":"External AI context","root":{"title":"Connecting AI integrations","sidebarTitle":"Overview","href":"/integrations/ai/index"},"pages":[{"group":"Google","pages":[{"title":"Setting up Google AI integrations","sidebarTitle":"Setup","href":"/integrations/ai/google-setup"},{"title":"Google Calendar AI integration","sidebarTitle":"Google Calendar","href":"/integrations/ai/google-calendar"},{"title":"Google Drive AI integration","sidebarTitle":"Google Drive","href":"/integrations/ai/google-drive"}]},{"title":"GitHub AI integration","sidebarTitle":"GitHub","href":"/integrations/ai/github"},{"title":"Notion AI integration","sidebarTitle":"Notion","href":"/integrations/ai/notion"},{"title":"Slack AI integration","sidebarTitle":"Slack","href":"/integrations/ai/slack"}]}]}]},{"tab":"Admin","pages":[{"title":"Admin","href":"/administration"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"Library","pages":[{"title":"Library","href":"/library"}]},{"tab":"Developers","menu":[{"item":"REST APIs","icon":"cloud","description":"Programmatically interact with Omni","pages":[{"title":"REST APIs","href":"/api"}]},{"item":"Embedding","icon":"chart-column","description":"Embed Omni's analytics \u0026 AI in apps","pages":[{"title":"Embedding","href":"/embed"}]},{"item":"CLI","icon":"terminal","description":"Interact with Omni APIs from the terminal","pages":[{"title":"CLI","href":"/developers/cli"}]},{"item":"Agent skills","icon":"robot","description":"Bring Omni workflows into your agent environment","pages":[{"title":"Agent skills","href":"/developers/agent-skills"}]}],"pages":[{"title":"Developers","href":"/api"}]},{"tab":"Product updates","menu":[{"item":"Demos","icon":"rocket","description":"Weekly updates of upcoming and experimental features","pages":[{"title":"Demos","href":"/demos"}]},{"item":"Changelog","icon":"file-lines","description":"New features, improvements, and bug fixes","pages":[{"title":"Changelog","href":"/changelog"}]}],"pages":[{"title":"Product updates","href":"/demos"}]}]},"basePath":"","title":"Connecting a GitHub dbt repository to Omni - Omni Docs","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["10e4515597","07c022d89b","a74be98ba7"],"chunks":["BannerMarkdown-DV-WToSZ.js","dist-CBUH0-zX.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-CR-RHrVC.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","Frame-5Xwp92K7.js","DynamicMarkdown-BoyYAA8K.js","zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js"]}