Transformer les données avec dbt

Transformer les données avec dbt est un cours de niveau intermédiaire de 5 leçons (environ 1 h 32), avec 21 exercices et 20 questions de quiz. Prérequis : Entrepôts de données et modélisation analytique. Le cours demande un environnement de projet complet, prévu dans une phase ultérieure de la plateforme.

  • Data engineering
  • Intermédiaire
  • 5 leçons
  • 1 h 32
  • 21 exercices
  • Environnement de projet complet (phase 2)

Le cours en bref

Ce cours vous apprend à organiser les transformations d'un entrepôt avec dbt. Vous écrirez des modèles reliés par ref() et source(), utiliserez Jinja et les macros, déclarerez des tests de données, construirez des modèles incrémentaux et des snapshots, puis documenterez le projet et l'intégrerez à une chaîne d'intégration continue. Les exercices font écrire le SQL compilé, exécuté et vérifié.

Ce que tu sauras faire

  • Structurer un projet dbt en couches avec des sources, des modèles de staging et des marts
  • Choisir une matérialisation et utiliser Jinja et les macros sans nuire à la lisibilité
  • Déclarer des tests génériques et singuliers et en interpréter les échecs
  • Écrire un modèle incrémental robuste aux mises à jour et aux données en retard
  • Historiser une source avec un snapshot
  • Documenter un projet, exploiter le lignage et le vérifier en intégration continue

Programme des 5 leçons

    • Expliquer le rôle de dbt dans une chaîne ELT
    • Déclarer des sources et écrire des modèles de staging avec source()
    • Relier les modèles entre eux avec ref() et comprendre le graphe obtenu

    Projet dbtModèleSourceFonction ref

  1. 02

    Jinja, macros et matérialisations

    18 min
    • Choisir la matérialisation adaptée à un modèle (vue, table, éphémère, incrémentale)
    • Utiliser des variables et des boucles Jinja pour générer du SQL
    • Écrire et appeler une macro réutilisable

    MatérialisationsJinjaMacros

  2. 03

    Tester les données

    18 min
    • Déclarer les tests génériques unique, not_null, accepted_values et relationships en YAML
    • Écrire un test singulier en SQL
    • Lire un test comme une requête qui renvoie les lignes en erreur

    Tests génériquesTests singuliersSévérité des testsTests de données

  3. 04

    Modèles incrémentaux et snapshots

    20 min
    • Écrire un modèle incrémental avec is_incremental() et {{ this }}
    • Choisir une clé unique et une stratégie pour gérer les mises à jour
    • Historiser une source avec un snapshot (SCD de type 2)

    Modèle incrémentalis_incremental et thisunique_key et stratégiesSnapshots

  4. 05

    Documentation, lignage et bonnes pratiques

    18 min
    • Documenter modèles et colonnes et générer le site de documentation
    • Exploiter le graphe de lignage pour sélectionner et analyser l'impact d'un changement
    • Organiser un projet dbt et l'intégrer à un processus de revue et d'intégration continue

    DocumentationLignage et sélectionExposuresIntégration continue

Projet final

Projet dbt d'une boutique en ligne, de la source au tableau de bord

Une boutique fictive charge chaque nuit ses commandes, clients et paiements dans un schéma brut, et ses clients changent régulièrement de segment. Construisez le projet dbt complet qui alimente un tableau de bord des ventes : couches staging, intermediate et marts, tests, historique des clients et intégration continue.

Livrables

  • Un dépôt Git contenant le projet dbt (dbt_project.yml, sources, modèles, macros, tests, snapshots)
  • Les modèles de staging des trois sources et les marts fct_orders et dim_customers
  • Les tests génériques sur toutes les clés et au moins deux tests singuliers métier
  • fct_orders en modèle incrémental avec unique_key et fenêtre de recouvrement
  • Un snapshot des clients et une dim_customers qui l'utilise
  • La documentation générée, une exposure pour le tableau de bord et un fichier de CI utilisant state:modified+

Critères d'évaluation

  • Aucune table construite par dbt n'est référencée en dur ; chaque source n'est lue que par un modèle de staging
  • Toutes les clés primaires sont testées et dbt build passe sans erreur
  • Le modèle incrémental produit le même résultat qu'un --full-refresh sur les mêmes données
  • Chaque modèle de marts a une description qui énonce son grain
  • Le code SQL compilé reste lisible et les choix de matérialisation sont justifiés

Questions fréquentes

Qu'est-ce que dbt ?

dbt (data build tool) est un outil open source qui compile des requêtes SELECT enrichies de Jinja et les exécute dans l'entrepôt de données, en gérant l'ordre des dépendances, les tests et la documentation.

Faut-il savoir programmer pour utiliser dbt ?

Il faut surtout bien connaître le SQL. Jinja s'apprend progressivement, et quelques notions de Git et de ligne de commande suffisent pour démarrer.

Quelle différence entre un test dbt et un test unitaire ?

Un test de données vérifie les données réelles d'un modèle (unicité, valeurs nulles, relations). Un test unitaire, disponible depuis dbt 1.8, vérifie la logique d'un modèle sur de petites données d'entrée fixées.

Quels prérequis pour ce cours ?

Le cours suppose le SQL avancé et la modélisation analytique : schéma en étoile, couches d'un entrepôt et dimensions à évolution lente, vus dans le cours Entrepôts de données et modélisation analytique.

Ce cours, raconté pour ton métier

Dis ce que tu veux savoir faire : « Transformer les données avec dbt » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.

L'aperçu est gratuit, et les cours se suivent un par un sans payer. Le parcours ne contient que des leçons du catalogue.