iT邦幫忙

2023 iThome 鐵人賽

DAY 21
1

當使用 dbt 遇到 error 怎麼辦呢?以下提供本人常用的途徑

可自己解決去哪 debug?

model SQL 寫錯→去 target/compiled/{project}/models/ 看每個 model compile 後的 SQL 語法

無法自己解決

優先: 判斷 error 原因並查找有關 dbt 文件

次要: 查 google 或有網路搜尋功能的機器人(因 chatgpt 資料只餵到 2021 內容比較舊),可能幫你找到對應的 stackoverflow, git issue 或 dbt 的論壇 dbt Community Forum

最後還是找不到: 可以去 dbt slack 看有沒有人討論你遇到的問題

分享使用 dbt 時遇到的特別問題:dbt model name 衝突

當我在本機端開發 dbt model 時,免不了試跑 dbt run,以及切換 git branch,久而久之下來,你的 target 資料夾存了很多 dbt 記錄檔,某天測試時卻突然出現類似以下錯誤:

https://ithelp.ithome.com.tw/upload/images/20231006/20162689VmhXoSxKry.png

第一次遇到時,心裡的 os 就是: 我確定 project 內沒有重複的 model,已經用 custom schema, alias 改名,而且昨天也跑的好好的,怎麼還出現重複 model 名字的錯誤? 論壇和文件也沒什麼資訊…。無意間發現 dbt clean, dbt deps 兩個指令,輸入後錯誤竟然就修復了!

馬上去查這兩個指令意思,研究 dbt 幾個月竟然沒看過

→ 所以 dbt clean 會把你本機的兩個資料夾內的內容清空,然後你要再重新安裝要用的 packages
為何這樣輸入就可以解決上面問題?

其實我還沒找到真正的原因,但推測有關的地方:

  1. 執行 dbt compile 時沒有正確吃到 dbt_profile.yml 的連線資訊
  2. log 紀錄的 target 資料夾內的 run_result.json 或 manifest.json 因為 branch 改變而有變→把 log 清空跑 dbt 不會使用舊紀錄

總而言之,若遇到偶爾一次的錯誤,先讓你的環境變乾淨再執行試試看


上一篇
dbt 學習資源
下一篇
Fundamental of Data Engineering 讀書心得 - 為何推薦這本書及資料工程師的兩種角色
系列文
如何借助 dbt 優化當代資料倉儲及資料工程師的水肥之路分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言