資料與儲存 2026 年 9 月 23 日

2026-09-23 — dbt v2 內建 DuckDB,免裝介接卡層

primary=https://duckdb.org/2026/09/22/dbt-fusion.html

dbt v2 內建 DuckDB,免裝介接卡層

來源:DuckDB Blog · 2026-09-22

背景

dbt 本地端要接 DuckDB 做查詢,以前只有兩條路:要嘛連外部倉庫跑輕量測試,要嘛自己用 pip 裝 dbt-duckdb 套件、自己顧版本相依。dbt Labs 這次把驅動直接打包進安裝檔的版本是 dbt v2,時間點在 2026 年 9 月 14 日,底層換成去年(2025 年 5 月 28 日)上線的 Rust 引擎 Fusion。

dbt-duckdb 套件從 2021 年 8 月上線至今,在 GitHub 累積 1.4k 星星,但社群長期反映裝機門檻高;其中一則 issue(#13193)拿下 146 個愛心,內容就是希望「輕量設定」能更早出現在安裝流程裡。這種維護成本正是 dbt v2 這次要處理的核心痛點。

核心改動

dbt v2 建立在 dbt Core 2.0 alpha 之上,這個 alpha 從 2026 年 6 月 1 日開始釋出,並以 Apache 2.0 授權開源。往後 DuckDB 驅動不必手動安裝,第一次執行 dbt 指令時會自動下載並快取,profile 設定語法完全不變:

my_project:
  target: dev
  outputs:
    dev:
      type: duckdb
      path: ./warehouse.duckdb
項目dbt v1.xdbt v2
安裝 DuckDB 驅動另外 pip install dbt-duckdb隨 dbt 內建,首次執行自動下載
Catalog 支援catalogs.yml 設定 DuckLake、Iceberg REST
Metadata大型 JSON manifestdbt Information Schema,可用 DuckDB 直接查詢

除了免裝,v2 也把 DuckDB 版本釘死在特定版號,藉此開放讀寫 Iceberg 等新功能;欄位層級的 lineage 改用原生 SQL 解析追蹤上游欄位,不必額外掛工具。部分邏輯像 sf_array_except 這類函式,從 SQL macro 搬進 DuckDB extension 執行,執行機制整套換掉。

影響範圍

受影響的是用 dbt 做本地開發與 CI 測試的資料工程師,尤其是原本手動管理 dbt-duckdb 版本、或用 profiles.yml 對接 DuckDB 的團隊。升級前建議先在 dbt v1.12 上測相容性:

dbt parse --use-v2-parser

官方另外提供 dbt-autofix 套件處理多數必要改動,並附上完整升級指南;若專案已經用到 DuckLake 或 Iceberg REST catalog,還要檢查 catalogs.yml 的新增設定是否對齊。這批改動不影響既有 profile 語法,但會改變函式與 metadata 的底層行為,升版前值得整批測試跑一遍。

原始來源:DuckDB Blog — DuckDB Now Ships inside dbt v2


End of article
0
Would love your thoughts, please comment.x
()
x