Définition

dbt Fusion Engine représente le moteur de nouvelle génération pour dbt, entièrement réécrit en Rust plutôt qu'en Python. Lancé en version bêta publique le 28 mai 2025, Fusion constitue une refonte complète du moteur d'exécution de dbt Core.

Qu'est-ce que dbt Fusion Engine ?

Fusion est un moteur construit pour la vitesse, comprenant nativement le code SQL. Il s'agit d'une réécriture fondamentale qui conserve la couche d'écriture familière de dbt (SQL, YAML, Jinja) tout en offrant des capacités techniques considérablement améliorées.
Points clés :
  • Moteur écrit en Rust au lieu de Python
  • Compréhension native du SQL multi-dialectes
  • Compatible avec la syntaxe d'écriture dbt existante
  • Distribution autonome sans dépendances Python
💡
Fusion est conçu pour la rapidité, la justesse et possède une compréhension native du SQL à travers plusieurs dialectes SQL de data warehouses. L'objectif est de permettre à dbt de fonctionner à une vitesse et une échelle sans précédent.

Architecture et fonctionnalités

Architecture technique

Fusion repose sur plusieurs technologies clés :
  • Rust : Le langage de programmation principal, choisi pour ses performances et sa sûreté mémoire
  • Apache Arrow : Système de types utilisé de bout en bout, des drivers jusqu'aux composants internes du compilateur
  • DataFusion : La représentation intermédiaire du compilateur SQL utilise le plan logique DataFusion
  • ADBC (Arrow Database Connectivity) : Nouveaux drivers pour des transferts de données plus rapides et une gestion unifiée des connexions

Compréhension SQL avancée

Fusion comprend pleinement le SQL de votre projet, permettant des capacités avancées comme la validation consciente du dialecte et le lignage précis au niveau des colonnes.
  • Parsing du SQL en arbre syntaxique (source-available)
  • Compilation et vérification de types du SQL (propriétaire, inclus dans le binaire étendu)

Compilation Ahead-of-Time (AOT)

Contrairement à dbt Core qui utilise un rendu Just-In-Time (JIT), Fusion utilise par défaut un rendu et une analyse Ahead of Time (AOT).
  1. Rendu de tous les modèles du projet
  1. Production et analyse statique du plan logique de chaque modèle
  1. Exécution uniquement après validation complète

Language Server Protocol (LSP)

Le Language Server interagit avec l'extension VS Code pour comprendre votre SQL, offrant :
  • Auto-complétion intelligente
  • Validation en temps réel
  • Aperçu des CTE en direct
  • Informations au survol
  • Mise en évidence des erreurs

Lignage au niveau des colonnes

Fusion introduit un lignage avancé qui catégorise les dépendances en trois types :
  • Copy : Colonnes passées sans modification
  • Transform : Données modifiées par agrégations ou fonctions
  • Inspect : Données examinées sans transformation directe

Installation et configuration

Installation via CLI

bash
curl -fsSL https://public.cdn.getdbt.com/fs/install/install.sh | sh -s -- --update
Vérification de l'installation :
bash
dbtf --version

Installation de l'extension VS Code

Recherchez "dbt" et sélectionnez celui publié par "dbt Labs Inc"

Configuration d'un projet

Initialisation d'un nouveau projet :
bash
dbtf init jaffle_shop cd jaffle_shop
Configuration du profil : Le processus dbt init vous guidera pour configurer votre connexion au data warehouse. Les informations sont stockées dans ~/.dbt/profiles.yml.
Ouverture dans VS Code : Ouvrez le dossier de votre projet dbt via View → Command Palette → "Workspaces: Add Folder to Workspace".

Mise à jour

Pour mettre à jour vers la dernière version :
bash
dbtf upgrade

Implémentation

Structure du projet

La structure d'un projet dbt Fusion est identique à dbt Core :
plain text
jaffle_shop/ ├── dbt_project.yml ├── profiles.yml (ou ~/.dbt/profiles.yml) ├── models/ │ ├── staging/ │ ├── intermediate/ │ └── marts/ ├── tests/ ├── macros/ ├── seeds/ └── snapshots/

Commandes principales

Les commandes dbt restent inchangées :
bash
# Parser le projet dbtf parse # Compiler les modèles dbtf compile # Exécuter les modèles dbtf run # Exécuter les tests dbtf test # Build complet (run + test) dbtf build # Installer les dépendances (automatique avec Fusion) dbtf deps # Générer la documentation dbtf docs generate dbtf docs serve

Intégration Git

Fusion s'intègre naturellement avec Git pour le versioning :
bash
git init git add . git commit -m "Initial dbt project"
L'extension VS Code offre également une interface Git intégrée.

Comparaison avec dbt Core

Tableau comparatif

Aspect
dbt Core
dbt Fusion
Langage
Python
Rust
Compilation
JIT (Just-In-Time)
AOT (Ahead-of-Time) par défaut
Performance parsing
Baseline
Jusqu'à 30 fois plus rapide
Compréhension SQL
Non (templating uniquement)
Oui (parsing et analyse)
Distribution
Nécessite Python
Binaire autonome
Dépendances
Python, pip, virtualenv
Aucune (tout est intégré)
Validation SQL
Au moment de l'exécution
Localement avant exécution
Lignage colonnes
Non
Oui (avec types de dépendance)
Extension VS Code
Community-built
Officielle, alimentée par LSP
Détection erreurs
Après exécution warehouse
En temps réel dans l'IDE
Licence
Apache 2.0
ELv2 (Elastic License v2)

Quand utiliser dbt Core vs Fusion ?

Restez sur dbt Core si :
  • Votre projet est petit (< 100 modèles)
  • Vous utilisez des fonctionnalités non encore supportées
  • Vous avez besoin d'un adaptateur non disponible
  • Vous préférez une licence open source pure
  • Vos temps de parsing ne sont pas un problème
Migrez vers Fusion si :
  • Vous avez un projet de taille moyenne à grande (> 500 modèles)
  • Vous voulez un feedback instantané pendant le développement
  • Vous cherchez à réduire les coûts cloud
  • Vous souhaitez un lignage précis au niveau colonnes
  • Vous voulez la meilleure expérience VS Code disponible

Conclusion

dbt Fusion Engine représente une évolution majeure dans l'écosystème dbt, offrant des performances spectaculaires et des capacités inédites grâce à sa réécriture complète en Rust. Avec son parsing jusqu'à 30 fois plus rapide, sa compréhension native du SQL et son intégration VS Code de pointe, Fusion transforme l'expérience de développement pour les analytics engineers.
Fusion représente l'avenir de dbt, offrant des performances plus rapides, une utilisation plus efficace des ressources de la plateforme de données et un suivi du lignage amélioré. Bien qu'actuellement en version Preview (anciennement Beta), le moteur gagne rapidement en maturité avec un objectif de disponibilité générale dans les prochains mois.

Ressources complémentaires

  • Community Slack : #dbt-fusion-engine
Image without caption
Image without caption
Image without caption
SIRINE SAOUESSI
Analytics Engineer chez unnest Après une formation en Big Data & Intelligence Artificielle, Sirine se concentre aujourd’hui sur les sujets de modélisation avec GCP, dbt & Dataform.
Avec ma formation en Data Science, je mène également des missions d’analyse, de clustering ou de prédiction.

Références : L’Oréal, Loulou Groupe, BRSL, IKEA
#analyticsEngineering #dataform #dbt #dataScience