DéfinitionQu'est-ce que dbt Fusion Engine ?Architecture et fonctionnalitésArchitecture techniqueCompréhension SQL avancéeCompilation Ahead-of-Time (AOT)Language Server Protocol (LSP)Lignage au niveau des colonnesInstallation et configurationInstallation via CLIInstallation de l'extension VS CodeConfiguration d'un projetMise à jourImplémentationStructure du projetCommandes principalesIntégration GitComparaison avec dbt CoreTableau comparatifQuand utiliser dbt Core vs Fusion ?ConclusionRessources complémentaires
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).
- Rendu de tous les modèles du projet
- Production et analyse statique du plan logique de chaque modèle
- 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
bashcurl -fsSL https://public.cdn.getdbt.com/fs/install/install.sh | sh -s -- --update
Vérification de l'installation :
bashdbtf --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 :
bashdbtf 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 :
bashdbtf upgrade
Implémentation
Structure du projet
La structure d'un projet dbt Fusion est identique à dbt Core :
plain textjaffle_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 :
bashgit 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
- Documentation officielle : https://docs.getdbt.com/docs/fusion
- GitHub dbt-fusion : https://github.com/dbt-labs/dbt-fusion
- Quickstart Fusion : https://docs.getdbt.com/guides/fusion
- Community Slack : #dbt-fusion-engine
- Blog dbt Labs : https://www.getdbt.com/blog
SIRINE SAOUESSIAnalytics 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