Transformer ses données sans se prendre la tête : le pari de BiiR avec dbt Core

Transformer ses données sans se prendre la tête : le pari de BiiR avec dbt Core

Introduction

Le monde de la donnée évolue à grande vitesse. Les architectures traditionnelles, souvent lourdes et rigides, laissent place à des approches plus agiles, principalement pensée pour des environnements cloud et collaboratives.

Chez BiiR, experts de la data, nous avons souhaité tester et comprendre une technologie déjà très présente : dbt Core, composante incontournable de la Modern Data Stack.
Nous avons décidé d’évaluer sa pertinence à travers un Proof of Concept (POC) concret, en migrant une partie de nos traitements Talend Open Studio vers dbt core. Voici notre retour d’expérience.

Avant de vous dévoiler notre étude, il serait pertinent d’apporter du contexte en définissant les points importants :

La Modern Data Stack, une révolution dans l’architecture data

La Modern Data Stack désigne une architecture moderne et modulaire, entièrement pensée pour le cloud et orientée vers la flexibilité, la collaboration et la rapidité d’évolution.

Principes clés :

  • Flexibilité : chaque brique est indépendante et remplaçable. (Architecture sur mesure)
  • Scalabilité : la puissance s’adapte à la demande, sans gestion d’infrastructure.
  • Accessibilité : les outils sont conçus autant pour les métiers que pour les équipes techniques.
  • Gouvernance automatisée : la donnée est documentée, tracée et contrôlée.

 

Les briques caractéristique d’une Modern Data Stack :

    1. Ingestion : récupération de données de sources hétérogènes (API, fichiers, bases de données, IoT, applications métier…).
    2. Stockage : centralisation et conservation des données dans un système cible, souvent un Data Warehouse ou un Data Lake (Snowflake, BigQuery, Redshift, etc.).
    3. Transformation / Modélisation : transformation des données brutes directement au sein du système de stockage, pour les rendre exploitables et conformes aux besoins métiers (via dbt, Airflow, etc.).
    4. Analyse & Déploiement : valorisation des données à travers des outils de visualisation et de reporting (Power BI, Tableau…) ou opérationnels (CRM, outils marketing, etc.).
    5. Gouvernance & Sécurité : catalogage, traçabilité et gestion de la conformité des données.

 

La Modern Data Stack s’appuie largement sur le paradigme ELT, qui redéfinit la manière de transformer les données directement dans les entrepôts cloud.

ELT : la transformation moderne des données

Historiquement, les traitements suivaient le modèle ETL (Extract – Transform – Load) : les données étaient transformées avant d’être chargées dans la base cible.

Le cloud a renversé cette logique avec le modèle ELT (Extract – Load – Transform) : les données brutes sont chargées dans la base de donnée cible, puis transformées directement à l’intérieur de celle-ci grâce à sa puissance de calcul.

Avantages du modèle ELT :

  • Scalabilité accrue grâce aux ressources cloud.
  • Les données sont chargées rapidement et transformées à la demande selon les besoins métiers.
  • Flexibilité pour explorer et ajuster les modèles à la volée.

C’est dans cette approche qu’intervient dbt Core, une solution pensée pour la Transformation des données. L’outil ne gère ni l’extraction ni le chargement.

dbt Core : structurer et automatiser la transformation des données

 

Un pilier de la moderne data stack

dbt Core (data build tool) est un outil open source rependu des architectures data modernes.
Son rôle : orchestrer les transformations de données directement dans le data warehouse, selon une logique ELT (Extract – Load – Transform).
Il ne s’occupe ni de l’extraction ni du chargement, mais optimise la phase de transformation, en tirant parti de la puissance de calcul de l’entrepôt sans ajouter d’infrastructure supplémentaire.
dbt Core se connecte à la plupart des entrepôts de données du marché (Snowflake, BigQuery, Redshift, Databricks, PostgreSQL, etc.), grâce à un large écosystème d’adaptateurs open source.

Une approche “développeur” de la data : prémices du rôle d’Analytics Engineer

dbt Core se distingue par son approche orientée code, loin des interfaces visuelles classiques.
Les transformations sont écrites en SQL, organisées dans une arborescence de fichiers claire et versionnées via des outils de CI/CD, à l’image des projets logiciels.

Cette philosophie “software engineering” appliquée à la data introduit de bonnes pratiques dans la modélisation analytique :

    • Modularité : Les macros Jinja permettent d’injecter de la logique Python dans le SQL, rendant les transformations dynamiques, paramétrables et réutilisables.
    • Fiabilité : les tests automatiques (intégrés ou personnalisés) garantissent la qualité des données
    • Collaboration : En intégrant Git et les principes de CI/CD, dbt rapproche les pratiques data de celles du développement logiciel, permettant aux équipes d’analystes et de data engineers de travailler ensemble.
    • Documentation intégrée : générée automatiquement à partir des modèles et paramétrables pour ajouter de la précision.

 

Un outil léger mais puissant

dbt Core repose sur un moteur Python open source, piloté via une interface en CLI (ligne de commande).
Quelques commandes suffisent pour créer un projet, exécuter les modèles, lancer les tests ou générer la documentation.
Il s’installe simplement à l’image d’une librairie python classique (version python 3.8 ou plus), avec un adaptateur spécifique à l’entrepôt de données utilisé (PostgreSQL, Snowflake, BigQuery, Redshift, Databricks, etc.).

Une fois configuré, dbt orchestre des requêtes SQL directement dans le data warehouse, produisant des vues, tables matérialisées ou tables incrémentales, selon les besoins.

Cette approche “SQL-first” repose sur trois briques complémentaires :

    • SQL, pour décrire les transformations et la logique métier ;
    • YAML, langage de configuration, permettant définir les sources, les tests et la documentation ;
    • Jinja, syntaxe de template basée sur du python permettant d’introduire de la logique réutilisable (macros, variables, conditions).

L’ensemble permet de construire des pipelines robustes, performants et maintenables, en tirant parti de la puissance du warehouse sans infrastructure supplémentaire.
Enfin, dbt génère automatiquement un graphe DAG (Directed Acyclic Graph), qui visualise les dépendances entre modèles et facilite la compréhension et le débogage des flux de données.

Composition d’un projet dbt core

Un projet dbt s’organise autour d’une arborescence claire et standardisée, qui reflète les différentes étapes du pipeline de transformation.
Chaque dossier a un rôle précis :

    • models/ : contient les fichiers SQL décrivant les transformations de données.
    • tests/ : regroupe les règles de qualité (unicité, non-nullité, cohérence entre tables).
    • macros/ : stocke les fonctions réutilisables écrites en Jinja, permettant de factoriser le code SQL.
    • snapshots/ : conserve l’historique des tables, utile pour suivre l’évolution des données dans le temps.
    • seeds/ : héberge les tables de référence statiques ou de paramétrage.
    • logs/ et target/ : contiennent respectivement les journaux d’exécution et les fichiers compilés.

La définition du projet repose sur plusieurs fichiers YAML qui décrivent les modèles, les sources et les tests associés.
Le fichier central dbt_project.yml définit la structure globale, les chemins et les paramètres de compilation, tandis que profiles.yml gère la connexion à la base de données.

Cette structuration permet d’appliquer les bonnes pratiques du développement logiciel à la transformation de données : code versionné et organisé, documentation intégrée et tests automatisés.

Pourquoi les équipes data l’adoptent

En standardisant les transformations SQL, dbt Core :

    • simplifie la gouvernance et la traçabilité des flux de données ;
    • s’intègre parfaitement à l’architecture modulaire de la moderne data stack;
    • favorise une culture data agile et collaborative.

De plus, l’outil bénéficie d’une communauté très active, apportant des packages permettant d’élargir les possibilités de dbt core.

POC BiiR : migrer un flux Talend vers dbt Core

 

Objectif

Plutôt que de rester sur une approche théorique, nous avons voulu confronter dbt Core à un cas concret pour en mesurer les apports et les limites.

L’idée : remplacer une partie de notre reporting interne, historiquement construit avec Talend Open Studio, par une architecture plus moderne, basée sur Python pour l’ingestion et dbt Core pour la transformation. L’enjeu n’était pas de tout réinventer, mais de valider l’efficacité, la maintenabilité et la simplicité de ce nouvel écosystème dans un contexte opérationnel.

Stack technique mise en place

Nous avons opté pour une architecture minimale mais représentative, afin de concentrer le POC sur la mise en œuvre de dbt Core plutôt que sur la complexité de l’écosystème.

Tableau Stylé
Etape Avant (Talend) Après (dbt Core)
Extraction Talend (API, fichiers, copy data) Scripts Python (API, fichiers, copy data)
Stockage SQL server PostgreSQL
Transformation Talend dbt Core
Visualisation Power BI Power BI
Orchestration Intégrée à Talend Scheduling Python (cron / scripts)

Notre étude

 

Tableau Stylé
Axe évalué Questions clés Resultats observés
Facilité de prise en main La solution est-elle abordable pour tout profil technique ? Quelques notions techniques, notamment liées à l’environnement Python et à la structuration du projet dbt, requièrent une courte phase d’apprentissage, mais la documentation détaillée facilite grandement la prise en main.
Facilité de migration Quelle complexité pour transposer un flux Talend existant vers dbt Core ? Migration fluide : la logique métier s’est transposée facilement en SQL. Le SQL permet une meilleure lisibilité et maintenabilité du processus.
Simplicité de mise en place L’installation, la configuration et la prise en main sont-elles accessibles ? Installation rapide et intuitive. Solution très documentée. dbt Core s’intègre facilement à une chaîne existante (Python + PostgreSQL + Power BI).
Richesse fonctionnelle Quelles fonctionnalités natives améliorent la qualité et la gestion des modèles ? dbt intègre nativement les tests, la documentation et les snapshots. Ces outils renforcent la qualité, la fiabilité et la gouvernance des données.
Maintenabilité du code Le projet est-il structuré, traçable et collaboratif ? Le trio SQL + YAML + Jinja structure le projet et le rend lisible. Le versioning Git facilite le suivi et la collaboration entre équipes.
Modularité et adaptabilitée dbt facilite-t-il la réutilisation et la gestion multi-environnements ? Grâce aux macros Jinja et à une configuration souple, dbt permet de réutiliser les modèles et de gérer facilement plusieurs environnements (dev, test, prod).

Conclusion

Ce POC nous a permis de confirmer la pertinence de dbt Core dans une architecture data moderne.
Son approche SQL-first s’est révélée efficace : les transformations sont lisibles, faciles à maintenir et compréhensibles par l’ensemble de l’équipe, qu’il s’agisse d’ingénieurs, d’analystes ou de profils métiers.
La documentation automatique et les tests intégrés renforcent la qualité et la traçabilité, tandis que le versioning Git apporte une rigueur bienvenue inspirée du développement logiciel.

Sur le plan technique, la combinaison Python + dbt + PostgreSQL facilite le déploiement tout en garantissant une architecture souple et pérenne.. Elle permet de s’affranchir d’un ETL graphique tout en favorisant une approche plus transparente et plus légère de la transformation de données.

Bien sûr, dbt Core n’est pas une solution clé en main. Il faut penser orchestration, tests, et gestion d’environnements (dev, test, prod) dès le départ.
Mais une fois ces fondations posées, la chaîne gagne en lisibilité, en robustesse et en agilité par rapport à une approche ETL classique.

Chez BiiR, cette expérimentation nous a permis de consolider notre expertise sur les usages concrets de dbt : comment le positionner dans un écosystème existant, comment l’orchestrer, et surtout comment le faire vivre dans la durée.
Nous accompagnons désormais nos clients dans la mise en place ou l’évolution de leur stack de transformation, en les aidant à tirer le meilleur de dbt Core aux côtés d’autres solutions (Python, orchestration, monitoring, visualisation). dbt Core constitue une solution robuste et efficace pour industrialiser la transformation de vos données.

✅ Avantages observés

Outil open source et modulaire : s’intègre facilement dans une stack existante, sans verrou technologique.


Approche SQL-first : transformations claires, lisibles et compréhensibles par tous les profils data.


Agilité : La flexibilité de dbt core permet de s’adapter facilement aux évolutions des besoins métier.


Pratiques software-first : dbt apporte à la data les standards du développement logiciel (Git, tests, documentation, CI/CD).


Connectivité : dbt Core s’adapte à la plupart des entrepôts de données modernes.

⚠️ Points d’attention

Configuration initiale rigoureuse : pour tirer parti des tests et snapshots, une structuration claire du projet est nécessaire.


Limité à la transformation : dbt ne gère que la transformation, il faut donc compléter le pipeline (ingestion, visualisation, monitoring...).


Courbe d’apprentissage : certains concepts (macros, Jinja, tests personnalisés) demandent un peu de pratique.


Pas d’interface graphique native : tout se fait en code, ce qui peut dérouter des profils non techniques.


Dépendance au moteur SQL sous-jacent : dbt Core s’appuie sur le dialecte et les performances de l’entrepôt cible.

Tags:
, , , ,