Profitez du mois de mai pour vous former gratuitement !
Profitez du mois de mai pour vous former gratuitement !
Profitez du mois de mai pour vous former gratuitement !
Je m'inscris

Qu'est-ce qu'un workflow DBT ? Commenr créer un Workflow pour ses données dans Data Build Tool ?.

Découvrez ce qu'est un workflow DBT, son rôle essentiel dans la transformation des données, et les meilleures pratiques pour l'implémenter efficacement dans vos projets data.

Erwan Eygay
Lead Teacher & Data Practitioner @DataBird
Mis à jour le
7/5/2025

Découvrez nos formations dédiées à la Data Engineering.

Découvrir

Le workflow DBT est au cœur de la transformation des données dans les environnements modernes. Il permet d'automatiser, d'organiser et d'optimiser les dbt transformations en suivant des best practices qui garantissent des résultats fiables et reproductibles.

Que vous soyez data engineer, analyste ou architecte de données, comprendre comment structurer your dbt project peut transformer votre façon de travailler avec les données. (Et sinon, vous pouvez toujours opter pour une formation dbt ;) )

Dans cet article, nous allons voir comment mettre en place un workflow DBT efficace, de la gestion du code aux tests, en passant par l'orchestration et le déploiement.

Introduction aux workflows sur DBT

DBT (Data Build Tool) est un outil qui exécute des SQL transformations directement sur un SQL warehouse, sans avoir besoin de serveurs intermédiaires. Son objectif est simple : transformer les raw data en data models bien structurés, prêts pour l’analyse.

Un workflow DBT bien pensé garantit que chaque dbt task est exécutée au bon moment et dans le bon environnement.

Prenons un exemple : imaginez une équipe qui travaille sur un dbt project pour une plateforme e-commerce. Les données brutes des transactions clients arrivent chaque jour dans un sql warehouse comme Snowflake ou BigQuery.

Le rôle de DBT est de structurer ces données, d'appliquer des règles métiers et de les rendre accessibles pour les analystes et les tableaux de bord.

Mais sans un workflow DBT clair, les dbt users risquent de rencontrer des erreurs, des performances dégradées ou des résultats incohérents. C’est pourquoi il est crucial de suivre les best practices pour organiser your dbt project et assurer une exécution fluide.

{{formation-dbt="/brouillon"}}

Les composants clés d'un workflow DBT

Gestion du contrôle de version avec Git

Dans tout dbt project, la gestion des code changes est essentielle. L'utilisation de version control avec Git permet d’assurer que chaque modification est bien suivie.

Imaginons un cas concret : un analyste veut modifier une transformation pour inclure une nouvelle colonne. S'il fait cette modification directement dans the dbt project, sans Git, il risque d’écraser le travail d’un collègue. En utilisant Git avec des branches, chaque changement peut être testé indépendamment avant d’être fusionné dans le projet principal.

Environnements de développement et de production séparés

Dans un bon workflow DBT, les development and production environnements doivent être distincts. Un dev target est utilisé pour tester de nouvelles transformations, tandis que le prod target garantit des données propres pour les utilisateurs finaux.

Par exemple, un dbt user développe un modèle SQL pour calculer le chiffre d’affaires. S'il teste directement sur la base de production, il risque d'affecter les dashboards.

En utilisant a dbt project bien configuré avec des environnements séparés, il peut s’assurer que ses modifications sont correctes avant de les appliquer en production.

Un style guide pour un projet structuré

Les dbt models doivent être organisés de manière logique pour éviter les erreurs et améliorer la lisibilité. Voici un cas typique : une entreprise qui utilise DBT Databricks pour transformer ses données clients. Si chaque analyste nomme ses modèles différemment et place ses fichiers au hasard, le projet devient rapidement ingérable.

En appliquant des field naming conventions et une structure claire (models/staging/, models/marts/), il est plus facile pour l’équipe de maintenir et de comprendre le projet.

Par exemple, voici une structure propre d'un projet dbt :

Meilleures pratiques pour les workflows DBT

Structurer son projet DBT

Un dbt project bien structuré aide à gérer les dépendances entre modèles.

Prenons l'exemple du jaffle shop project, souvent utilisé pour apprendre DBT. Ce projet utilise trois niveaux :

  • staging pour nettoyer les source data
  • intermediate pour appliquer des règles métier
  • marts pour les data models finaux

Cette organisation permet d’exécuter les transformations efficacement et d’éviter les erreurs.

Tester et documenter ses modèles

Un bon workflow DBT inclut des tests automatiques.

Par exemple, si vous créez un modèle qui calcule le revenu par utilisateur, il est utile d’ajouter un test not_null pour éviter des valeurs manquantes dans le résultat final.

En documentant chaque modèle avec la fonction ref function, les équipes peuvent facilement comprendre la logique métier et éviter les erreurs lorsqu'elles mettent à jour les transformations.

Automatiser le déploiement

Un workflow DBT efficace ne repose pas sur des exécutions manuelles. Il faut schedule workflows pour que les transformations s'exécutent à des moments précis.

Par exemple, une entreprise de logistique peut automatiser l’exécution de run dbt chaque nuit pour mettre à jour ses indicateurs de performance.

En intégrant DBT avec un outil comme Airflow, Dagster ou Prefect, on peut programmer des job runs et être notifié en cas d’échec.

Intégration de DBT avec d'autres outils

Orchestration avec Airflow ou Dagster

Utiliser DBT avec Airflow permet de relier les transformations SQL avec d'autres tâches, comme l'ingestion de données. Par exemple, une entreprise qui récupère des données depuis une API peut exécuter une notebook task pour récupérer les nouvelles ventes, puis lancer un dbt task pour transformer ces données et les rendre exploitables.

Surveillance et alertes

Un workflow DBT performant inclut aussi un suivi des exécutions. Grâce à DBT Cloud, Datadog ou Great Expectations, on peut détecter les anomalies et envoyer des alertes en cas de bug fixes nécessaires.

Étapes pour mettre en place un workflow DBT efficace

1. Configurer son projet

Créez un a dbt project avec une structure bien définie, en séparant source data, staging models et final models. Voici les étapes pour y parvenir ensemble.

Pour installer DBT Core, utilisez la commande suivante :

pip install dbt-core
pip install dbt-redshift # Adaptateur spécifique à votre Data Warehouse

Vous pouvez créer un nouveau projet dbt grâce à cette commande :

dbt init mon_projet_dbt

Je me rend dans le dossier de mon projet créé (j'ai changé le nom de mon projet en 'mon_projet_dbt_bis') :

cd mon_projet_dbt_bis

Je vais ensuite vérifier la structure de mon projet grâce à la commande 'tree', que vous pouvez installer grâce à cette commande :

brew install tree

Je vais créer des sous-dossiers pour organiser mon projet :

mkdir models/staging models/intermediate models/marts

Lorsque je réécris la commande tree, je retrouve cette architecture voulue de mes dossiers :

2. Mettre en place le versioning

Maintenant, nous allons initialiser un repository url sur GitHub ou GitLab pour suivre toutes les modifications et éviter les conflits entre collaborateurs.

git init

git add .

git commit -m "Initial DBT project setup"

Désormais, créons ensemble un repository sur votre GitHub :

git remote add origin https://github.com/user/my_dbt_project.git

git push -u origin main

Vous devez désormais voir dans votre page GitHub le repo avec le premier commit "Initial DBT project setup"

3. Définir des environnements distincts

Configurons maintenant un profiles directory pour séparer le développement de la production et éviter d'impacter les données en cours d’utilisation.

Ouvrez le fichier ~/.dbt/profiles.yml et ajoutez cette commande :

my_dbt_project:

outputs:

dev:

type: bigquery

dataset: dbt_dev

prod:

type: bigquery

dataset: dbt_prod

target: dev

Astuce : Vous pouvez ouvrir directement ce fichier via votre terminal grâce à cette commande :

nano ~/.dbt/profiles.yml

4. Développer et tester les transformations

L'objectif de cette étape est de créer des DBT models, de les tester avec dbt test pour garantir la qualité des données et de documenter chaque transformation afin d'assurer la transparence et la maintenabilité du projet.

Dans un projet DBT, les staging models servent à normaliser et nettoyer les données brutes avant de les enrichir dans des modèles plus avancés.

D'abord, ouvre ton projet DBT et crée un fichier SQL dans le dossier models/staging/:

Les tests permettent de vérifier la cohérence des données avant de les exposer aux utilisateurs.

Ouvrez votre terminal et exécutez la commande suivante dans votre projet DBT :

dbt test

DBT va exécuter tous les tests définis dans les fichiers .yml associés à vos modèles.

Par défaut, les tests vérifient si certaines colonnes sont uniques, non nulles, ou respectent une liste de valeurs acceptées.

Pour finir le développement, DBT permet de générer une documentation interactive pour comprendre les transformations appliquées.

Dans DBT, les sources (données brutes dans BigQuery) doivent être déclarées avant d'être utilisées dans un modèle.

Lancez la génération de la documentation avec la commande suivante, qui va produire un site web interactif avec la description des modèles et leurs relations :

dbt docs generate

Démarrez un serveur local pour visualiser la documentation, cette commande ouvre ce site en local pour naviguer facilement dans la structure du projet :

dbt docs serve

Une page va s'ouvrir directement sur votre navigateur par défaut :

5. Automatiser l’exécution

Apache Airflow est souvent utilisé pour gérer et surveiller les workflows de données.

Créez un DAG Airflow dans le fichier dags/dbt_dag.py, et ajoutez-y ce code :

from airflow import DAG

from airflow.operators.bash import BashOperator

from datetime import datetime

# Définition du DAG (workflow)

dag = DAG(

'dbt_pipeline',

schedule_interval='@daily', # Exécutez DBT chaque jour

start_date=datetime(2025, 2, 1), # Commence le 1er février 2025

catchup=False

)

# Tâche pour exécuter DBT

run_dbt = BashOperator(

task_id='run_dbt',

bash_command='dbt run',

dag=dag

)

Alternative : Si vous ne voulez pas installer Airflow, vous pouvez utiliser cron, un outil natif sur Linux/macOS pour programmer des tâches.

Vous pouvez ouvrir l'éditeur cront via :

crontab -e

Puis ajoutez cette ligne pour exécuter dbt run tous les jours à 2h du matin :

0 2 * * * cd /chemin/vers/ton/dbt_project && dbt run

Comment se former à DBT ?

Pour bien maîtriser the dbt workflow, il existe plusieurs ressources :

En bref :

Un workflow DBT bien structuré est indispensable pour garantir des dbt transformations efficaces et fiables. 

En appliquant les best practices, en séparant les development and production environnements et en automatisant l’exécution des tâches, vous pouvez optimiser your dbt project et assurer une transformation des données fluide et scalable.

Que vous débutiez avec DBT Core ou que vous cherchiez à améliorer vos projects, suivre ces recommandations vous aidera à tirer le meilleur parti de votre sql warehouse et à rendre votre pipeline de données plus robuste.

{{formation-dbt="/brouillon"}}

Faites un premier pas dans la data avec nos cours gratuits
Démarrer

Les derniers articles sur ce sujet

Difficulté :
Difficile