看到系列文的標題,我想選擇用dbt來做案例應該是意料中吧!雖然說DV的發明比dbt推出早了約30年,我個人認為在這個時間點上用dbt來架構DV應該是適用大部分實用案例的最佳選項。
如果有對dbt不熟悉的朋友,我建議可以看一下我鐵人賽的隊友們的發文熟悉一下dbt的使用方式。其中,我們團長Stacy寫的dbt入門系列文應該是我看過最適合新手的中文資源,有需要的朋友可以收藏點讚一下~~
推薦大家實用dbt來做DV主要有三大理由:
SQL++
從本質上來說,dbt 是一個 SQL 字串模板工具(string templating tool),而SQL是資料領域的通用語言,基本上所有的資料工具都會有某種程度的SQL介面。連主推Python Notebook + Spark的Databricks也都在這幾年也加入了SQL兼容性。所以從傳遞性質上來看,用dbt實現DV是兼容性最廣的選項。
DRY設計原則 + dbt 巨集(macro)
雖然說SQL是一個相對嚴格和冗長的程式語言,通過dbt的巨集功能還是可以相對簡單的堅持DRY原則(Don't Repeat Yourself)。dbt巨集功能基本上就是Jinja模板語言(Template Language)的延伸,再加入了一些針對SQL與資料開發環境的物件介面(Object Interface)。
之前提到過,相對一般資料倉儲項目,DV的設計雖然複雜但是高重用性與模塊化。通過巨集,你可以把絕大部分的SQL代碼都模板化,而只通過設置與參數來創建資料模型、管道。
dbt packages
dbt是一個開源專案(Open Source Project),也吸引了很多不同的開發團隊來做貢獻。最近幾年dbt人氣增長後,基本上所有的基本案例都有好幾個可以直接使用的軟體包,就連相對小眾的DV都有好幾個選項!如果第一次使用DV模型的話,直接使用dbt package來做基本設置會把實踐的技術門檻降低很多。