【資料工程學習】與dbt初次見面
一個多月前,我在台大圖書館找到一本書,名為 “Data Engineering with dbt”。我一直對於資料工程(Data Engineer)很好奇,但一直沒有鑽研的機會;其中一個原因是本來我的目標是當數據分析師,而資料工程的技能樹與數據分析師的技能樹有些差異,因此我放較少的心力在資料工程的技術鑽研上。(雖然有聽聞有些公司會將數據分析師當資料工程師來用,同時讓員工清洗資料與分析資料,但嚴格說起來,資料工程師與數據分析的職能差異甚大) 然而,當我看到標題 “dbt”後,便不知何以被吸引了。
我曾經看過資料工程前輩Enzo的限時動態,了解坊間有很多數據分析的課程、很多人想轉職到數據分析師,但很少人開設資料工程的課程,更別說以討論聲量相比,dbt與storytelling with Data、Data Visualization…等技術相較之下,討論度不算很高。出於好奇心,我把“Data Engineering with dbt”第五章Transforming Data with dbt讀完了,也看了dbt官網資料、前人的研究成果、YouTube影片和網路上的討論,盡可能地大量吸取新知。
什麼是dbt?
“dbt”的全稱為data build tool,常見於資料工程師的工作領域中。依據Analytics8於今年7月6日最新的文章 “dbt (Data Build Tool) Overview: What is dbt and What Can It Do for My Data Pipeline?” ( dbt(資料構建工具)概述:什麼是dbt,它能為我的Data Pipeline做些什麼?) 對於dbt的定義,dbt是近期較新的技術,能幫助數據分析者在數據分析工作上變得更為容易,也可以補足數據工程領域人才稀缺的問題。【註一】dbt的興起,或許和資料分析與資料清洗的需求量大增有關,連帶的許多公司意識到資料轉換作業的重要性,因此開始引進dbt工具,結合SQL來完成大量的工作。
何以dbt吸引人?
dbt的出現幫助喜歡、較擅於low code的人更高效的轉換數據,且可以更快速的取得數據 (畢竟要練就工程能力,也非一蹴可幾的) 。 除此之外,比起其他程式語言,SQL語法對於非工程相關的人來說,相對較容易上手。人們可以使用SQL SELECT語法來建模,產生可靠的資料。而因dbt相對於傳統的ETL(擷取、轉換和載入),更加便於數據分析人員使用與理解,因此對於擁有資料團隊的公司來說,dbt的出現可幫助資料工程師與數據工程師協作,共同管理數據。因此當我了解dbt的優點後,我便下定決心了解這個工具,也希望能再更熟悉SQL語法。
dbt真的是數據分析者的救星嗎?
如果從dbt的運作模式來看,dbt比較擅長的是資料轉換能力 (data transformation),而資料擷取和資料載入則不是dbt所處理的範圍。因此如果一位數據分析者想轉往資料工程發展,只會使用dbt工具仍是不夠的。除此之外,dbt本身無法自動結合domain knowledge來提供分析建議,也無法像AI工具直接提供程式碼,因此雖然坊間常言dbt是數據分析者在工作上的福音、可以讓數據分析工作變得更為高效;但如果本身是對於版本控管能力較弱者,或對使用資料庫能力不夠成熟、而公司又未有好的資料庫性能時,僅用dbt會有風險: 因dbt本身不儲存資料,它依賴於資料庫進行所有的計算和儲存。且如果與Git等其他較為成熟的版本控制系統相比,dbt在版本控制上的靈活性不高【註2】。因此如果能將Git和dbt相結合使用,對dbt使用者來說才比較有加乘的效果。
此外,如我於一開頭所說,dbt目前在數據分析與資料工程的討論度,不能說非常高;在學習資源的獲得上,可能沒有辦法像其他資料工程所使用的程式語言或工具來得容易 (資料工程的培養,已經不容易了;更何況是這種較新的技術) 。因此儘管使用dbt有許多優點,但不得不說dbt仍是一個很新、需要跟其他工具協作的工具。如果想單用dbt來勇闖資料與數據分析領域、以一招打天下,以目前dbt的能力,恐怕很困難。
適合初學者學習dbt的資源
如果你和我一樣,在了解dbt的優缺點後,仍對dbt有興趣,那麼我找了很多適合初學者的資源。以下是其中我較推薦的入門線上資源:
(1) dbt, https://www.getdbt.com/blog/dbt-cloud-launch-showcase-2024 (dbt官方網站)
(2) Mastering Snowflake,“ What is dbt Data Build Tool? | What problem does it solve? | Practical use cases,” https://www.youtube.com/watch?v=efsqqD_Gak0
(3) Seattle Data Guy, “What Is DBT and Why Is It So Popular — Intro To Data Infrastructure Part 3,” https://www.youtube.com/watch?v=8FZZivIfJVo
(4) Sleek Data, “Introduction to DBT (Data Build Tool) | ETL Vs ELT,” https://www.youtube.com/watch?v=b2nSMPiXdXk&list=PLc2EZr8W2QIBegSYp4dEIMrfLj_cCJgYA
願自己與大家學習dbt順利!
【註1】有關dbt的定義和說明,可參考以下網站 “dbt (Data Build Tool) Overview: What is dbt and What Can It Do for My Data Pipeline?”
https://www.analytics8.com/blog/dbt-overview-what-is-dbt-and-what-can-it-do-for-my-data-pipeline/
【註2】有關dbt的優點與缺點,可參考以下網站 “Deep Dive into DBT: Transforming Data in Your Warehouse,” https://medium.com/@namangoel1402/deep-dive-into-dbt-transforming-data-in-your-warehouse-15a6bc7b9626