veilletech.fr
23 sept. Feed du jour
#07 DUCKDB Article

dbt v2 embarque DuckDB : plus rien à installer

Un binaire, un fichier DuckDB, trois lignes de profil : dbt tient maintenant sur un portable.

dbt 2.0.0, sorti le 14 septembre sur le moteur Rust Fusion, intègre l'adaptateur DuckDB : plus de paquet Python à installer, le pilote est téléchargé au premier lancement. La v2 apporte aussi des métadonnées en Parquet interrogeables par DuckDB, une analyse du SQL avant exécution et les catalogues DuckLake et Iceberg.

3 min de lectureintermédiairevidéo 1:24
Partager
Sommaire5 sections
  1. Ce qui se passe
  2. Mise en route
  3. Ce qui change pour un développeur
  4. Migrer sans risque
  5. À retenir

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.ymlYAML
mon_projet:
  target: dev
  outputs:
    dev:
      type: duckdb
      path: ./warehouse.duckdb

dbt é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 :

SQL
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

  1. Rester en dbt 1.12 et tester l'analyseur v2 : dbt parse --use-v2-parser.
  2. Si le projet passe, installer dbt v2.
  3. Laisser dbt-autofix traiter 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.