dbt (data build tool) est devenu le standard de fait pour la transformation de données dans le cloud. Son principe : appliquer les bonnes pratiques du développement logiciel (versioning, tests, documentation, CI/CD) à la couche de transformation SQL.
Pourquoi dbt a tout changé
Avant dbt, la transformation de données était un far west. Des requêtes SQL éparpillées dans des scripts, des ETL propriétaires, aucun versioning, pas de tests. Quand une table était fausse, personne ne savait pourquoi.
dbt apporte :
- Le SQL comme langage unique : pas besoin de Spark ou Python pour transformer ses données
- Le versioning : chaque transformation est un fichier SQL dans un repo Git
- Les tests : validez vos données à chaque run (unicité, non-null, référentiel)
- La documentation : générée automatiquement, toujours à jour
- Le lineage : visualisez les dépendances entre vos modèles
dbt Core vs dbt Cloud
dbt Core est open source et gratuit. Vous gérez l'orchestration et l'infrastructure vous-même (généralement avec Airflow ou Prefect).
dbt Cloud est la version managée. Elle inclut un IDE web, un orchestrateur intégré, le CI/CD et la gouvernance. C'est plus cher mais réduit considérablement la charge opérationnelle.
Notre recommandation : dbt Core pour les équipes data matures avec un bon tooling existant. dbt Cloud pour accélérer la mise en place et réduire la dette technique.
Bonnes pratiques
Organisation des modèles
models/
├── staging/ # Nettoyage et renommage des sources brutes
├── intermediate/ # Logique métier réutilisable
└── marts/ # Tables finales consommées par la BI
Convention de nommage
stg_source__tablepour le stagingint_domain__descriptionpour les intermédiairesfct_pour les tables de faits,dim_pour les dimensions
Tests systématiques
Chaque modèle doit avoir au minimum :
- Un test d'unicité sur la clé primaire
- Un test not-null sur les colonnes critiques
- Un test de référence (relationships) pour les clés étrangères
Les limites de dbt
dbt n'est pas une solution miracle :
- Pas adapté au streaming : dbt est orienté batch
- Pas de gestion d'état : chaque run repart de zéro (sauf incremental)
- Dépendance au warehouse : la puissance de calcul est celle de votre Snowflake/BigQuery/Databricks
Pour les pipelines complexes mêlant batch et streaming, dbt se combine avec des orchestrateurs comme Prefect ou Dagster qui gèrent le flux de bout en bout.
