PageSourceSearch

https://vulcansql.com/assets/js/570f9dce.9f797584.js

js vulcansql.com collected 2026-10-03 23:19:55 UTC 7,010 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdoc=self.webpackChunkdoc||[]).push([[6707],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},o=Object.keys(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,f=u["".concat(s,".").concat(m)]||u[m]||c[m]||o;return n?a.createElement(f,i(i({ref:t},d),{},{components:n})):a.createElement(f,i({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p<o;p++)i[p]=n[p];return a.createElement.apply(null,i)}return a.createElement.apply(null,n)}u.displayName="MDXCreateElement"},7869:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>p});var a=n(7462),r=(n(7294),n(3905));const o={},i="The dbt Extension",l={unversionedId:"extensions/dbt",id:"extensions/dbt",title:"The dbt Extension",description:"dbt is a powerful tool to transform your data, and VulcanSQL supports queries from dbt models directly.",source:"@site/docs/extensions/dbt.mdx",sourceDirName:"extensions",slug:"/extensions/dbt",permalink:"/docs/extensions/dbt",draft:!1,editUrl:"https://github.com/Canner/vulcan-sql/tree/main/packages/doc/docs/extensions/dbt.mdx",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Overview",permalink:"/docs/extensions/overview"},next:{title:"The Hugging Face Extensions",permalink:"/docs/extensions/huggingface/overview"}},s={},p=[{value:"Installation",id:"installation",level:2},{value:"Setup of your dbt project",id:"setup-of-your-dbt-project",level:2},{value:"Using the dbt extension",id:"using-the-dbt-extension",level:2},{value:"Examples",id:"examples",level:2}],d={toc:p};function c(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"the-dbt-extension"},"The dbt Extension"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.getdbt.com/"},"dbt")," is a powerful tool to transform your data, and VulcanSQL supports queries from ",(0,r.kt)("a",{parentName:"p",href:"https://docs.getdbt.com/docs/building-a-dbt-project/building-models"},"dbt models")," directly.\nIf you use dbt to create some models, you can make APIs for them instantly."),(0,r.kt)("h2",{id:"installation"},"Installation"),(0,r.kt)("p",null,"We need to install an additional package to integrate with dbt:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Install package(If you have VulcanSQL in the binary version, you can skip this 
1step)"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"npm i @vulcan-sql/extension-dbt\n"))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Setup ",(0,r.kt)("inlineCode",{parentName:"p"},"vulcan.yaml")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"extensions:\n  dbt: '@vulcan-sql/extension-dbt' # add this line\ndbt:\n  modelFiles:\n    - ./target/manifest.json # config the path to manifest.json\n")),(0,r.kt)("admonition",{parentName:"li",type:"info"},(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("a",{parentName:"p",href:"https://docs.getdbt.com/reference/artifacts/manifest-json"},"Manifest")," is an artifact which is built from dbt cli, it should be located at \u201c./target/manifest.json\u201d")),(0,r.kt)("admonition",{parentName:"li",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"We are not able to share profiles with dbt yet, you need to config profiles for both VulcanSQL and dbt separately",(0,r.kt)("strong",{parentName:"p"},".")))),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Setup ",(0,r.kt)("inlineCode",{parentName:"p"},"profiles.yaml"),"(if you are using DuckDB as the data source for your dbt project)"),(0,r.kt)("p",{parentName:"li"},"Add ",(0,r.kt)("inlineCode",{parentName:"p"},"persistent-path")," to the ",(0,r.kt)("inlineCode",{parentName:"p"},"profiles.yaml")," in the root of your VulcanSQL project like following"),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'- name: duckdb\n  type: duckdb\n  connection:\n    persistent-path: [duckdb db file path of your dbt project]\n  allow: "*"\n')))),(0,r.kt)("h2",{id:"setup-of-your-dbt-project"},"Setup of your dbt project"),(0,r.kt)("p",null,"Please refer to the ",(0,r.kt)("a",{parentName:"p",href:"https://docs.getdbt.com/quickstarts"},"dbt Quickstarts turotials")),(0,r.kt)("h2",{id:"using-the-dbt-extension"},"Using the dbt extension"),(0,r.kt)("p",null,"Using models of dbt is extremely easy, you only need to use the following syntax in your VulcanSQL project."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},'{% dbt "model.<project-name>.<model-name>" %}\n')),(0,r.kt)("p",null,"For example, to query all data from model ",(0,r.kt)("inlineCode",{parentName:"p"},"my_first_dbt_model")," in the project ",(0,r.kt)("inlineCode",{parentName:"p"},"demo"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sql"},'select * from {% dbt "model.demo.my_first_dbt_model" %}\n')),(0,r.kt)("h2",{id:"examples"},"Examples"),(0,r.kt)("p",null,"You can check out this ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Canner/vulcan-sql-examples/tree/main/dbt-jaffle-shop"},"dbt-jaffle-shop")," example for further details!"))}c.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.