dbt:新一代數(shù)據(jù)轉(zhuǎn)換工具
dbt(Data Build Tool)一款專為數(shù)據(jù)分析和工程師設(shè)計(jì)的開源工具,專注于 ETL/ELT 流程的數(shù)據(jù)轉(zhuǎn)換(Transform)環(huán)節(jié),幫助用戶以高效、可維護(hù)的方式將原始數(shù)據(jù)轉(zhuǎn)換為適合分析的數(shù)據(jù)模型。
用戶只需要編寫查詢(SELECT)語句或者 Python 代碼,dbt 負(fù)責(zé)將這些語句和代碼轉(zhuǎn)換為表、視圖或者數(shù)據(jù)集;多個(gè)查詢語句(也稱為模型)組成一個(gè) dbt 項(xiàng)目,一個(gè)模型通?;谄渌P蜆?gòu)建,dbt 負(fù)責(zé)管理它們之間的關(guān)系和依賴。
dbt 通過將版本控制、模塊化、可移植性、CI/CD 以及測(cè)試和文檔化等軟件工程最佳實(shí)踐引入數(shù)據(jù)分析的工作流之中,提升了數(shù)據(jù)轉(zhuǎn)換的可靠性和可維護(hù)性。dbt 的主要功能包括:
- 簡(jiǎn)化開發(fā),通過編輯模塊化的查詢語句或者 Python 代碼,避免了數(shù)據(jù)轉(zhuǎn)換過程中重復(fù)的表創(chuàng)建和維護(hù);
- 動(dòng)態(tài) SQL,支持使用 Jinja 模板實(shí)現(xiàn)動(dòng)態(tài) SQL(如變量、循環(huán)、條件語句),提升代碼復(fù)用性;
- 定義模塊順序,使用 ref 函數(shù)基于其他模型定義新的模型,實(shí)現(xiàn)模塊之間的依賴和執(zhí)行順序;
- 文檔生成,支持自動(dòng)生成項(xiàng)目和數(shù)據(jù)文檔,可視化表與字段的依賴關(guān)系;
- 模型測(cè)試,確保轉(zhuǎn)換模型的準(zhǔn)確性和完整性;
- 包管理,模塊化代碼管理和共享;
- 種子文件,通過 CSV 文件加載參考表、配置表等靜態(tài)數(shù)據(jù);
- 數(shù)據(jù)快照,通過記錄數(shù)據(jù)的歷史狀態(tài)變化,支持?jǐn)?shù)據(jù)回溯。
dbt 支持連接各種數(shù)據(jù)庫、數(shù)據(jù)倉庫、數(shù)據(jù)湖以及查詢引擎,包括 AlloyDB、Apache Spark、Athena、Azure Synapse、BigQuery、Databricks、Dremio、Glue、IBM Netezza、Materialize、Microsoft Fabric、Oracle、PostgreSQL、Redshift、Snowflake、Trino、Teradata、Clickhouse、CrateDB、Databend、Doris、DuckDB、Hive、DB2、Impala、MySQL、SQL Server & Azure SQL、SQLite、Starrocks、TiDB、TimescaleDB、Spark 等數(shù)據(jù)平臺(tái)。
dbt 提供了兩種形式的產(chǎn)品:
- dbt Core:免費(fèi)開源的 CLI 工具,支持命令行形式開發(fā)和運(yùn)行 dbt 項(xiàng)目。
- dbt Cloud:基于 Web 的托管服務(wù),提供 UI 界面以及各種企業(yè)級(jí)功能;對(duì)個(gè)人開發(fā)者免費(fèi)。
dbt Cloud輸入以下網(wǎng)址并注冊(cè)一個(gè)免費(fèi)賬號(hào):
本地安裝可以參考官方文檔:https://docs.getdbt.com/