今天要在聊 dbt Core 如何執行基本的 dbt 操作。
在本機的 VS Code 或其他 IDE 開發,與 dbt Cloud 不同,沒有瀏覽器的 GUI 可以使用,所以一般的操作流程會有所不同。
雖然 VS Code 有許多相關的 extension 可以安裝,但我想先從不使用任何 extension 開始,如此一來也可以套用到任何開發環境,不限於 VS Code。
基本的指令例如 dbt run
或 dbt build
都和 dbt Cloud 相同,只是要下在 terminal。
如果用 VS Code 或 Pycharm 都有內建 terminal,但要用作業系統內建的 termial 也可以。
如果安裝在 venv 的話,記得要先切換進 venv 才能執行指令。
只是下指令的話沒有什麼不同,但當要除錯時,作法就會有所不同。
我們在 terminal 執行時,可以看到 console logs,但如果要查看詳細的 debug logs,則需要到此路徑logs/dbt.log
每次在執行 dbt run 或 dbt build 時,dbt engine 會先 complile model 的語法。
所謂 compile 就是將 Jinja SQL 編譯成 SQL,在 BigQuery 可以直接執行的語法。
compile 的結果可以在 target/compiled
資料夾底下看到。
舉例來說下圖可以看到原本在 dbt model 中,{{ ref('stg_customers') }}
依 project 的設定,被替換成了實際的 table 名稱,`dbt-demo-2023`.`dbt_dev_stacy`.`stg_customers`
上面 target/compiled
看到的單純是 select 語法,但在 target/run
底下的檔案內容,加上了 create table 的動作。
接下來分享四個 dbt Core 會用到,但 dbt Cloud 不太會使用的四個指令。
昨天已經示範過了,基本的檢查,例如 Python 是否成功安裝、profiles.yml 所設定的資料庫,是否能成功連線。
dbt debug
預覽前 n 筆資料
dbt show --select customers
預設會顯示 5 筆,但也可以自行設定需要的筆數。
dbt show --select customers --limit 10
將 model compile 成 SQL 語法,但不執行 run。
compile 後的語法除了會存在 targer/compiled
資料夾之外,也會顯示在 console。
dbt compile --select customers
先執行指令產出相關檔案
dbt docs generate
再執行
dbt docs serve
就可以在本機看到 documentation
明天的主題:除了基本操作外,如何運用 VS Code Extension - dbt Power User。
歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加