dbt core setup,可以先照著官方文件按部就班的前進。基本上就是 pip install, authentication 還有一些環境的設定。
在這個過程中,最麻煩的就是:使用者是一個多人團體。
如果只有一個人在開發 dbt,那他的電腦設定完就好了,但組織裡就是有很多人、以及更多的電腦。
每年進來的新員工、新實習生,用不同的 OS,還會因為電腦晶片不同有些奇奇怪怪的問題,處理這種雜事真的很麻煩。
初始化是麻煩的,還有另一點是:版本差異。
像我們一開始部署時版本是 1.4,後來我們升級至 1.8,兩個版本就有蠻多的差異,需要額外的調整與更新。
甚至在升級到 1.8 時,我也發現有些功能在 1.8.0 跟 1.8.7 需要進行不同的設定。
在這種版本問題下,無可避免地可以想見一個情境:A 說「他在我的電腦上好好的!」B 說「明明就不會動!」肯定是搞得雞飛狗跳。
所以我們就使用了 vscode 裡提供的 dev containers,讓所有人 git pull 之後,可以在同樣的容器中開發,容器中已經安裝好相同的設定,不用再處理 pip install 以及各種版本的問題。
圖片來源:vscode 官方文件
我們在 dockerfile 中,安裝了 dbt 相關的套件,還有安裝一些好用的 package,像是 sqlfluff, pre-commit 等等的,讓大家的開發成果能遵循一致的標準。
而 dev container 除了像是 dockerfile 上述的設定:安裝 package、一些基礎的環境設定,還可以在 devcontainer.json 中,進行一些其他的附加設定,我們就做了一些額外的處理:
"customizations": {
"vscode": {
"settings": {
"[yaml]": {
"editor.defaultFormatter": "redhat.vscode-yaml",
"editor.formatOnSave": true
}
},
"extensions": [
"innoverio.vscode-dbt-power-user",
"redhat.vscode-yaml"
]
}
}
組織內要統一一致的開發節奏!SOP 是導入一套新工具時的核心要件。