iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1
AI & Data

dbt: 告別過時的SQL開發流程系列 第 7

DAY 07 - dbt Cloud 入門 (5) - dbt Cloud Deployment

  • 分享至 

  • xImage
  •  

前幾天我們聊的是 Develop,今天我們要暫時進入 Deploy 的部份。

https://ithelp.ithome.com.tw/upload/images/20230806/201595759kCrXByh3H.png

在開始之前,務必把前幾天的異動提交並 merge to the main branch。


建立佈署環境

Deploy -> Environments
可以看到目前只有 Development Environment(開發環境),也就是我們在 DAY 02 所設定,從 DAY 04 到 DAY 06 使用的的 dataset: dbt_dev。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575Hold1YQHu7.png

接下來我們要建立 Deployment Environment(佈署環境)。開發和佈署使用不同的 dataset,才不會讓開發的工作影響到正式的資料流程。不管在開發環境做了什麼事,都不應該破壞到正式的報表。

點選 Create Environment

  • Environment name: 輸入名稱,例如:Default Production Environment。
  • Environment Type: 灰掉了無法自選,因為 Development Environment 只能有一個,不能多建,所以只能是 Deployment。
  • dbt Version 用系統預設帶的就可以了,不用特別選。
  • Deployment Credentials: 輸入自訂的 dataset 名稱,例如 dbt_prod。
    完成後按 Save
    https://ithelp.ithome.com.tw/upload/images/20230917/20159575A9mW7IpfAM.png

建立 Job 並執行

Deploy -> Jobs
點選 Create Job
https://ithelp.ithome.com.tw/upload/images/20230917/20159575Tdmx4t5tLy.png

輸入 Job 名稱以及描述,例如 Default Build / Build all dbt models。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575FfN3Z3uKFR.png

Environment 選剛剛新建的 Environment,其他都帶預設選項即可。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575WZa8PxK9Xa.png

存檔完成後,按 Run Now。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575wvVPzkvYDt.png

完成後顯示綠色勾勾表示成功。
https://ithelp.ithome.com.tw/upload/images/20230917/201595756PZ7T8POm1.png

點進去可以看各個步驟的執行狀態。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575qsrSlTO4Sg.png

第一個步驟 Clone Git Repository,每次執行 job 時,都會抓最新的版本。
在 Job 列表可以清楚看到,每一次執行時,抓了哪一版 Commit #,或點進去 debug logs 也可以看到。
https://ithelp.ithome.com.tw/upload/images/20230917/20159575iNREnaEmp1.png

https://ithelp.ithome.com.tw/upload/images/20230917/20159575YWiRqVtBlE.png

再來到 BigQuery 檢查結果。
可以看到執行完 job 後,自動生成了 dataset: dbt_prod
dbt models 也在這個 dataset 底下,產生了對應的 table 或 view
https://ithelp.ithome.com.tw/upload/images/20230917/20159575RjkJ9ggLeD.png


今日小結&明日預告

前幾天我們都是從 Development 開發環境執行指令。
今天我們在 Deployment 建立了正式環境,並執行了 Job。

可以在 BigQuery 看到,我們在 Development 和 Deployment 使用了不同的目標 dataset,也就是說開發環境和正式環境井水不犯河水,我們在開發時所作的任何異動,只會影響到 dataset: dbt_dev,而在正式環境跑的排程,用到的是 dataset: dbt_prod。

另外,每次正式環境執行的 job,都會到 GitHub 抓最新的 Commit #,強迫我們必須落實版控。
如果做任何異動,都必須 Commit 並 merge to main branch;任何我們 merge to main branch 的語法,每次執行 job 的時候也都會被抓進去。

過去我與 data team / data practitioners 共事的的經驗,很少有有正式環境、測試環境的區隔,也難完整落實版控,沒有上版的概念。

如果你是不懂 software development best practices 的 data practitioner,從今天開始,歡迎你正式加入 dbt 的世界,採用 dbt Cloud 這一套 deployment 流程,讓寫 SQL 也有點像個軟體工程師。

明天的主題:回到 development,為我們的 dbt 專案加入 tests,控管基本的資料品質。

參考資料


歡迎加入 dbt community
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加


上一篇
DAY 06 - dbt Cloud 入門 (4) - dbt run、materializations
下一篇
DAY 08 - dbt Cloud 入門 (6) - 加入 tests, dbt test & dbt build
系列文
dbt: 告別過時的SQL開發流程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言