Ce qui se passe
dbt 2.0.0, sorti le 14 septembre 2026, est la première version de dbt livrée avec un adaptateur DuckDB intégré. L'équipe DuckDB détaille la mise en route et ce que la v2 change pour ses utilisateurs.
Le contexte : dbt Labs a présenté Fusion, son moteur réécrit en Rust, le 28 mai
2025, sans DuckDB ; une demande d'adaptateur a été ouverte deux jours plus tard.
Le 1er juin 2026, la première alpha de dbt Core 2.0 a publié l'essentiel du code
de Fusion sous Apache 2.0. Depuis la 2.0.0, deux distributions gratuites en
local partagent le même moteur : dbt (propriétaire) et dbt-oss (open
source). « Fusion » ne désigne plus que le moteur.
Mise en route
En v1, un adaptateur était un paquet Python, et dbt-duckdb prenait la version
de DuckDB que pip résolvait. En v2, les adaptateurs vivent dans un monorepo
Rust et passent par des pilotes ADBC : au premier lancement, dbt télécharge le
pilote DuckDB et le met en cache. Le profil, lui, ne change pas :
profiles.ymlYAMLmon_projet:
target: dev
outputs:
dev:
type: duckdb
path: ./warehouse.duckdbdbt épingle désormais sa version de DuckDB. C'est ce qui rend possibles les
catalogues Iceberg REST en lecture-écriture, et le transfert d'une partie des
macros vers des fonctions natives — array_except est ainsi exposée en
sf_array_except.
Ce qui change pour un développeur
Des métadonnées en Parquet. dbt parse --generate-info-schema écrit l'état
du projet en fichiers Parquet dans target/info_schema/v1/, à côté d'un
manifest.json qui peut peser des centaines de mégaoctets. DuckDB ne lit que
les colonnes demandées : contrôler des conventions en CI — quels modèles sont
des tables, lesquels n'ont pas de test — devient une requête, sans lancer dbt ni
l'entrepôt. Le dépôt dbt publie ces fichiers comme jeux de test, ce qui permet
d'essayer sans projet :
SELECT name, materialized, schema_name
FROM 'https://raw.githubusercontent.com/dbt-labs/dbt/main/crates/dbt-docs-server/web/src/test/fixtures/parquet/dbt.models.parquet';Le SQL compris avant exécution. Le moteur v2 analyse le SQL de plusieurs
dialectes : une colonne inexistante ou un type incompatible est signalé avant
d'atteindre DuckDB. La même analyse donne la lignée colonne par colonne en
local, sans compte sur la plateforme dbt :
dbt compile --generate-info-schema --static-analysis strict ajoute un fichier
dbt.column_lineage au même dossier. L'extension VS Code de dbt s'en sert pour
l'autocomplétion et les erreurs en ligne.
Les catalogues DuckLake et Iceberg. Ils se déclarent dans catalogs.yml,
exigent use_catalogs_v2: true dans les flags de dbt_project.yml, et un
modèle choisit le sien avec catalog_name dans son config. dbt génère les
ATTACH. L'adaptateur Python n'offre rien de tel.
Migrer sans risque
- Rester en dbt 1.12 et tester l'analyseur v2 :
dbt parse --use-v2-parser. - Si le projet passe, installer dbt v2.
- Laisser
dbt-autofixtraiter une bonne partie des changements, puis suivre le guide de mise à niveau vers la v2.
Les versions Python de dbt Core restent disponibles pour qui préfère attendre.
Source : DuckDB Now Ships inside dbt v2, Geertjan Wielenga, blog DuckDB, 22 septembre 2026.