+50 XP

dbt (data build tool) : la transformation SQL industrialisée

Une main tourne une vanne en laiton sur un tuyau, ralentissant les gouttes tombant dans un bocal.

dbt (data build tool) est devenu la lingua franca de la transformation de données moderne. En cinq ans, il est passé du statut d'expérimentation open-source à celui d'outil standard utilisé par des milliers d'équipes data dans le monde. Comprendre dbt, ce qu'il fait, pourquoi ça marche et comment l'utiliser stratégiquement, est indispensable pour tout CDO qui pilote une plateforme data moderne.

Ce que dbt fait réellement

dbt est un outil de transformation. Il se situe dans le T de l'ELT : une fois les données chargées dans votre warehouse, dbt les transforme en SQL.

Avant dbt, les transformations étaient généralement écrites sous forme de stored procedures, de scripts Python maison, ou intégrées dans des outils ETL. Ces approches partageaient les mêmes problèmes : pas de version control, pas de tests, pas de documentation, pas de lignage.

dbt règle tout cela dans un seul outil :

  • SQL-native : les transformations sont des SELECT SQL. Aucun nouveau langage à apprendre.
  • Version control : les modèles dbt sont des fichiers dans Git. Chaque changement est tracé, relisible et réversible.
  • Tests : définissez les propriétés de qualité attendues en YAML. dbt les teste automatiquement.
  • Documentation : générée automatiquement à partir des descriptions de colonnes dans la config YAML.
  • Lignage : dbt construit un DAG de toutes les dépendances entre modèles, ce qui vous donne un lignage de données automatique.

dbt (data build tool) Tutorial for Beginners

Watch on YouTube

Vérification des acquis

1. Dans le paradigme ELT, où opère dbt ?

2. Quel est l'objectif principal de la fonction ref() dans dbt ?

3. Pour un très gros volume de données où les reconstructions complètes sont devenues impraticables, quelle materialisation est la plus adaptée ?

CHOIX MULTIPLES

4. Sélectionnez TOUS les problèmes des approches de transformation antérieures à dbt (stored procedures, scripts maison, outils ETL) que dbt a été conçu pour résoudre.

Sélectionnez toutes les réponses correctes.

CHOIX MULTIPLES

5. Sélectionnez TOUTES les affirmations qui décrivent correctement les tests et les sources dans dbt.

Sélectionnez toutes les réponses correctes.

dbt en pratique : les concepts clés

Models : un modèle dbt est un fichier SQL qui définit une transformation. Le nom du fichier devient le nom de la table ou de la vue dans votre warehouse. Vous écrivez des SELECT ; dbt se charge du CREATE TABLE AS.

Refs : les modèles se référencent entre eux via la fonction ref() (par exemple, FROM {{ ref('stg_customers') }}). C'est ce qui crée le graphe de dépendances et permet à dbt d'exécuter les modèles dans le bon ordre.

Tests : deux types : les tests génériques (not_null, unique, accepted_values, relationships) et les tests singuliers (du SQL sur mesure qui doit renvoyer zéro ligne si les données sont correctes). Les tests s'exécutent après chaque build.

Sources : tables externes (non construites par dbt) référencées via la fonction source(). dbt peut tester automatiquement la fraîcheur des sources.

Materializations : la façon dont dbt crée le résultat. Table (reconstruction complète), View (aucune donnée stockée, la requête s'exécute à l'accès), Incremental (ne traite que les enregistrements nouveaux ou modifiés, essentiel sur les gros volumes).

Le pattern du modèle incremental

Sur les gros volumes, les refreshes complets deviennent impraticables. Un modèle incremental ne traite que les nouveaux enregistrements :

Le principe : filtrer la source pour ne garder que les enregistrements plus récents que le dernier enregistrement présent dans la table cible. Au premier run, tout est traité. Aux runs suivants, seul le delta l'est. Le coût de calcul passe ainsi de O(lignes totales) à O(nouvelles lignes par run).

Les modèles incremental exigent une conception soignée : comment gérer les données qui arrivent en retard ? Les enregistrements mis à jour ? Les suppressions ? C'est sur ces cas limites que la conception d'un modèle incremental dbt se complique, et c'est là qu'une erreur provoque des problèmes de qualité de données.

Organiser dbt à l'échelle

Un projet dbt mature suit un pattern en couches :

  • Staging (stg_) : un modèle par table source. Transformation minimale, renommage de colonnes, casting de types, suppression des données de test. Aucune logique métier.
  • Intermediate (int_) : la logique métier est appliquée. Jointures, agrégations, champs dérivés. Pas consommé directement par les outils BI.
  • Marts (dim_, fct_, agg_) : modèles dimensionnels et tables de faits. C'est la couche Gold, consommée par les outils BI et les data consumers.

Cette organisation sépare les responsabilités : le staging gère les particularités propres aux sources, les marts exposent la logique métier, l'intermediate fait le lien.

Chez Gitlab (qui a publié l'intégralité de son projet dbt en open-source), cette structure permet à n'importe quel contributeur de savoir où chercher une transformation donnée, et empêche la logique métier de se glisser dans les modèles de staging.

Questions du quiz

  1. Quelle est la principale innovation de dbt par rapport aux transformations SQL traditionnelles (stored procedures) ?

A) dbt est plus rapide

B) dbt ajoute version control, tests automatiques, documentation et lignage de données, les pratiques d'ingénierie logicielle appliquées aux transformations SQL

C) dbt supporte plus de bases de données

D) dbt génère automatiquement le SQL

Réponse: B

  1. Qu'est-ce qu'une materialisation "incremental" dans dbt ?

A) Un modèle qui ne traite qu'un échantillon des données

B) Un modèle qui reconstruit la table entière à chaque run

C) Un modèle qui ne traite que les enregistrements nouveaux ou modifiés depuis le dernier run

D) Un modèle qui s'exécute automatiquement toutes les heures

Réponse: C

  1. Dans l'organisation d'un projet dbt mature, que contient la couche "Staging" ?

A) Les tables dimensionnelles et de faits consommées par les outils BI

B) La logique métier complexe et les jointures

C) Un modèle par table source avec transformation minimale, renommage, casting, sans logique métier

D) Les agrégations pour les dashboards exécutifs

Réponse: C

À faire, tiré de cette leçon

Ces actions sont compilées dans le plan d'action du rôle.

  • Adopter dbt pour apporter versioning, tests et documentation aux transformations
Voir le plan d'action complet →

Articles liés

Les articles récents du blog qui s'appuient sur cette leçon.