iT邦幫忙

2023 iThome 鐵人賽

DAY 4
1

為何選擇 dbt?

Day 3, 我介紹一開始如何選擇 data stack, v1~v2.2,因為我只會試算表跟 BigQuery. 但這樣已經足夠完成我一開始做資料分析的目的,也讓我開始應用到產品分析。

當時的產品有多種營收來源,包含廣告跟訂閱收入,讓使用者可以付費使用進階功能。我想要比較免費用戶跟付費用戶的行為差異,我在筆記 App 內存了 3 段 SQL code 來撈取所有用戶、免費用戶以及付費用戶。真是超白癡的,但我只想到可以這樣解。一直要在 BigQuery 跟筆記 App 間切換真是很麻煩。

我無法用搜尋的方式找其他解法,因為我也不知道該用哪些個關鍵字來描述這個問題 😩。還好,CTO 發現我的窘境,介紹 dbt 給我。原來我在做的行為叫做 modularize, 而 dbt models 正好就是用來解決這個問題的。

什麼是 dbt?

歡迎到 dbt 官網 https://www.getdbt.com/product/what-is-dbt/ 查看更多資訊。除了 Blog, 他們也有課程、各種線上說明會,持續的宣導跟介紹 dbt. 還有很多非官方的資源,就直接搜尋 “dbt” 即可。

dbt 正是我需要的。我無法想像原來可以用這種方式解決我的問題。dbt 讓我理解 data modeling 的概念。那些被我貼在筆記 App 的一段段 SQL code 可以變成重複使用的 models, 然後再被引用到 stages 或 marts 內,提供一種心智概念讓我可以理解 model 架構,甚至也有真實的 DAG (directed acyclic graphs) 可以直接看。

On DAGs, Hierarchies, and IDEs by dbt

以前,我只能自己抽檢商業邏輯,然後保佑沒有遺漏、資料正確。因為沒有人可以檢查我的 SQL code, 難免會有些疏失自己看不到。只有到最後熟悉數字的人,看報表覺得怪怪的才會發現問題,也可能還是不會被發現。例如,忘記排除測試帳號,可能影響的數字太少甚至不會被發現。

dbt 提供測試,至少可以檢查出這種基本錯誤。而且 dbt 預設就要跟 git 結合使用,所以 CTO 就開了一個 GitHub project 給我,也指派 data engineer 檢查我的 SQL 🎉, 讓我對自己提供的報表多一點信心。

身為一個非工程師,當時被加入如同黑箱的 GitHub 其實還滿開心的 🤭。因為對工程師來說,code 就是文件,看了就知道,但我看不懂,所以老是需要請他們解釋,有些功能就算找到過去的 product sepct, 也很難保證線上功能真的有照 spec, 總是請 engineer 看 code 比較正確。

ETL → ELT

在上篇文章 Day 3, 我提到一開始如何選擇 data stack, 當時是 ETL. 直到開始使用 dbt, 就轉變成了 ELT - Extract, Load, Transfer, 再加上一個 BI 工具。

v1.2 ELT

工程師幫我抓資料都倒進 BigQuery. 因為技術演進,雲端 data warehouse 可以快速處理 petabytes 等級的資料,既然我需要處理的資料也沒這麼多,全部上雲變成是有效且省錢的做法,省去工程師來處理這段。

這就是 ELT 的核心,將所有資料都先上雲,之後再來處理。這些處理過的資料也一樣放在雲端,只是不同的 tables, 方便工程師將這些 tables 接到 BI 工具上,例如 Metabase.

如何開始使用 dbt?

由工程師協助架設 BigQuery, dbt 跟 Metabase. 這些工具改變我做分析的方法,也帶我入門資料分析,學會更多新知識。

BigQuery 跟 Metabase 相對簡單,只要會使用 SQL 就容易上手。雖然有些語法不太相通,但做中學很快就知道。

dbt 就比較困難一點,因為它不只是 SQL. 因為我家工程師使用 GitHub 跟 VSCode, 所以他們也幫我這樣設定 local 環境,但我真是超不會用的,每次寫完 SQL 我就轉頭問隔壁的工程師說,那接下來要怎麼辦?為了不要每次都被我打擾,他開始教我 git 概念跟指令 😆。

要開始使用 dbt, 得學會基本的 git 概念、指定,如何使用 GitHub 以及要有安裝好的開發環境 e.g. VSCode.

這邊有 dbt quick start很多學習資源。 不用熟到像個 software engineer 使用高階技巧,會基本使用即可,我遇到 git conflict 還是會轉頭求救 😅。一開始的環境架設還是需要有工程師協助,但剩下應該可以自己來。

🤜 小技巧

  • 挑選你朋友或同事熟悉的工具,這樣你遇到問題時才有人可問。每個工具都有好有壞,不用花太多時間挑選,還是要用了才知道。
  • 不要花太多時間在安裝或準備環境,就求救吧。

開始進入新世界🚢

當我開始使用 dbt, 超多名詞都第一次聽到,data warehouse, IDE, DAG 等等。發現原來有 "modern data stack." 這種說法,因為我根本就不知道 legacy 是哪些,但 “modern” 這個又讓大家覺得很興奮,好像我正好加入一段改革 🤩。下一篇文章,將會繼續討論這個。


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


上一篇
尋找適合你的資料工具 - Day 3
下一篇
開始探索 Data 世界 - Day 5
系列文
被 dbt 帶入門的數據工作體驗 30 想30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言