在前面我們已經談論了,在現代資料棧裡的轉換層 (transformation layer) 的主角其實是 SQL ,而 dbt 則是擔任輔助生成 SQL 的角色。而 dbt 用來輔助 SQL 生成的眾多功能之中,最重要的功能,莫過於動態組合 SQL。
實際上,在一般的軟體開發,也有一種類型的軟體,擔任類似的角色,它們通常稱之為建置工具 (build tool) ,比方說,在 C 語言可能是用 Make,在 Java 是用 Maven 。在軟體開發,當程式語言經過了編譯之後,會產生一個又一個的物件檔 (object file),建置工具會去解析釐清,這些物件檔之間的依賴關系,而後串接眾多的物件檔,進而產生最後的程式。
承上所述,dbt 可以視為是『資料領域的建置工具 (build tool)』,也因此,它的全名叫做 data build tool 。
dbt 也有提供雲端版本的,所以如果可以考慮雲端版本的讀者們,我也推荐使用雲端版本,畢竟維護本地端版本的軟體,還是滿費心的。
pip install dbt-core
這一步是安裝 dbt 的核心程式pip install dbt-duckdb
這一步是安裝 dbt 對於 DuckDB 的轉接器 (adapter), dbt 可以支援各種的資料倉儲、甚至是 SQL 引擎,只要安裝了對應的轉接器即可。上述的步驟裡,最棘手的一步,其實是「準備好 python 環境」。一旦系統有超過一個 python 直譯器,管理或是切換不同的 python 直譯器 ,就是一大麻煩。我認為,合理的解決之道,應該是要先安裝 python 直譯器的管理器,比方說,pyenv。
在 dbt 官網的安裝說明,與這邊提供的安裝方式大同小異。官網的安裝說明比較強調要用 python virtual environment (venv
)去管理 pip modules ,這是很好的習慣,特別是當你也同時會用 python 來開發應用軟體時,多安裝了一些 pip modules 之後,很容易產生 modules 之間的衝突,所以最好要用 venv
之類的程式去管理。
由於 dbt 沒有辦法單獨運作,它一定要搭配上 SQL 才能發揮它的功能。於是,在我們開始透過一些實際的案例來展現 dbt 的功能之前,我們還要先安裝好一個可以提供我們 SQL 的資料倉儲軟體,先預告一下,我們接下來要安裝的軟體是 DuckDB 。