iT邦幫忙

2024 iThome 鐵人賽

DAY 15
1
AI/ ML & Data

這跟文件說的不一樣!從 0 到 1 導入 dbt 的實戰甘苦談系列 第 15

DAY 15 dbt core 跟文件說的不一樣!談如何利用 Dev Container 統一開發環境,避免版本與環境差異

  • 分享至 

  • xImage
  •  

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 以及各種版本的問題。

https://ithelp.ithome.com.tw/upload/images/20240929/2016895410jTKDTpTb.png

圖片來源:vscode 官方文件

我們在 dockerfile 中,安裝了 dbt 相關的套件,還有安裝一些好用的 package,像是 sqlfluff, pre-commit 等等的,讓大家的開發成果能遵循一致的標準。

而 dev container 除了像是 dockerfile 上述的設定:安裝 package、一些基礎的環境設定,還可以在 devcontainer.json 中,進行一些其他的附加設定,我們就做了一些額外的處理:

  • 設定 authentication:在檔案中 mount google 的 service account,讓容器內有權限來觸發 BigQuery 任務。
  • 個人化設定:我們設定了 formatter 以及 extension,讓 repo 中的文件可以進行格式化,而之前一再提其的 dbt core 不可或缺的附加元件 — dbt power user 也可以直接安裝於容器中做使用。
"customizations": {
      "vscode": {
          "settings": {
              "[yaml]": {
                  "editor.defaultFormatter": "redhat.vscode-yaml",
                  "editor.formatOnSave": true
              }
          },
          "extensions": [
              "innoverio.vscode-dbt-power-user",
              "redhat.vscode-yaml"
          ]
      }
  }

組織內要統一一致的開發節奏!SOP 是導入一套新工具時的核心要件。


上一篇
DAY 14 dbt core 跟文件說的不一樣!談為何要自己做 dbt core
下一篇
DAY 16 排程跟文件說的不一樣!談 dbt 與 Airflow 的協作方法
系列文
這跟文件說的不一樣!從 0 到 1 導入 dbt 的實戰甘苦談30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言