Skip to Content
L’échange d’apprentissage de HIC débute le 13 Juillet 2026. Voir le programme
AtelierÉlément 10 sur 22 · 45 min

Formation dbt : de l’installation au premier modèle

De l’installation à l’exécution de votre premier modèle — avec des commandes prêtes à copier-coller tout du long.

Ce que vous apprendrez
  • Installer dbt-core et un adaptateur d’entrepôt dans un environnement virtuel
  • Initialiser un projet dbt et confirmer la connexion à l’entrepôt avec dbt debug
  • Écrire un modèle, le référencer avec ref(), et l’exécuter avec dbt run
  • Définir et exécuter des tests de schéma, puis générer et servir le site de documentation
  • Utiliser les commandes dbt du quotidien : seed, run, test, docs, build, clean
Avant de commencer
  • Python 3.8+ installé, avec pip disponible dans le PATH
  • Un éditeur de code (VS Code recommandé)
  • Un accès à un entrepôt — Snowflake, BigQuery, Postgres, Redshift ou DuckDB (idéal pour les démos en direct, aucun compte cloud nécessaire)
  • Git installé (optionnel, recommandé pour le contrôle de version)
Télécharger les fichiers du labo (.zip)

1. Introduction

(data build tool) permet aux analystes et aux ingénieurs de transformer des données déjà chargées dans un entrepôt, avec de simples requêtes SQL SELECT. dbt prend en charge la tuyauterie — transformer le SQL en tables ou en vues, gérer les dépendances, les tests et la documentation.

Ce que vous allez apprendre : installer dbt, se connecter à un entrepôt, la structure d’un projet, écrire et exécuter un modèle, tester et documenter, et les commandes du quotidien.

2. Prérequis

  • Python 3.8+ installé
  • Un éditeur de code (VS Code recommandé)
  • Un accès à un entrepôt — Snowflake, BigQuery, Postgres, Redshift ou DuckDB (idéal pour les démos en direct, aucun compte cloud nécessaire)
  • Git installé (optionnel, recommandé pour le contrôle de version)
# check your python version python --version

3. Installer dbt

dbt se compose de deux parties : dbt-core (le framework) et un paquet dbt-<adapter> (un connecteur pour votre entrepôt spécifique).

3.1 Créer un environnement virtuel

python -m venv dbt-env source dbt-env/bin/activate # Mac/Linux dbt-env\Scripts\activate # Windows

3.2 Installer dbt-core et un adaptateur

# Postgres pip install dbt-core dbt-postgres # Snowflake pip install dbt-core dbt-snowflake # DuckDB — best for local, zero-setup demos pip install dbt-core dbt-duckdb

3.3 Vérifier l’installation

dbt --version

Vous devriez voir la version de dbt-core ainsi que l’adaptateur installé.

Point de contrôledbt et l’adaptateur installés
Vous devriez voir :
Core: - installed: 1.8.0 - latest: 1.8.0 - Up to date! Plugins: - postgres: 1.8.0 - Up to date!
Vous ne voyez pas cela ?
  • dbt: command not found — l’environnement virtuel n’est pas activé. Relancez source dbt-env/bin/activate.
  • La ligne de l’adaptateur est absente — le paquet dbt-<adapter> ne s’est pas installé ; relancez la commande pip install dbt-core dbt-<adapter> correspondant à votre entrepôt.

4. Mettre en place votre premier projet

4.1 Initialiser un nouveau projet

dbt init my_dbt_project

Cette commande vous demande de nommer le projet, de choisir votre adaptateur et de saisir les identifiants de connexion — stockés dans profiles.yml (généralement dans ~/.dbt/profiles.yml).

4.2 Se placer dans le projet

cd my_dbt_project

4.3 Tester la connexion

dbt debug
Point de contrôleConnexion à l’entrepôt confirmée
Vous devriez voir :
Connection: ... Connection test: [OK connection ok] All checks passed!
Vous ne voyez pas cela ?
  • Connection test: [ERROR] — les identifiants ou l’hôte dans profiles.yml sont incorrects ; revérifiez les valeurs saisies lors de dbt init.
  • Could not find profile named 'my_dbt_project' — le nom du profil dans dbt_project.yml ne correspond pas à celui de profiles.yml.

5. Structure du projet

    • dbt_project.yml
    • profiles.yml
CheminRôle
dbt_project.ymlConfiguration principale du projet
models/Vos modèles .sql vivent ici
seeds/Fichiers CSV chargés comme tables
snapshots/Suivi des dimensions à évolution lente (SCD)
macros/SQL réutilisable (macros Jinja)
tests/Tests de données personnalisés
analyses/SQL ad hoc, non matérialisé
profiles.ymlIdentifiants de connexion — vit dans ~/.dbt/, hors du projet

6. Créer votre premier modèle

Un modèle est simplement un fichier .sql contenant une requête SELECT. dbt le compile et l’exécute sur votre entrepôt.

6.1 Un modèle simple

models/customers.sql

models/customers.sql
-- models/customers.sql select id as customer_id, first_name, last_name, email, created_at from raw.customers where email is not null

6.2 Charger des données d’exemple comme seed (optionnel)

Ajoutez un CSV dans seeds/ (p. ex. seeds/raw_customers.csv), puis :

dbt seed

6.3 Référencer le seed depuis un modèle

models/stg_customers.sql
-- models/stg_customers.sql select id as customer_id, first_name, last_name from {{ ref('raw_customers') }}

Concept clé : {{ ref(...) }} est au cœur de dbt — il construit automatiquement le graphe de dépendances et indique à dbt dans quel ordre exécuter les modèles.

7. Exécuter votre modèle

# run all models dbt run # run one specific model dbt run --select stg_customers # run a model + everything downstream of it dbt run --select stg_customers+ # run a model + everything upstream of it dbt run --select +stg_customers # full refresh (rebuild incremental models from scratch) dbt run --full-refresh
Point de contrôleModèle construit avec succès
Vous devriez voir :
1 of 1 START sql view model public.stg_customers .................. [RUN] 1 of 1 OK created sql view model public.stg_customers .............. [OK in 0.15s] Completed successfully Done. PASS=1 WARN=0 ERROR=0 SKIP=0 TOTAL=1
Vous ne voyez pas cela ?
  • ERROR creating sql view model — vérifiez la syntaxe SQL par rapport au dialecte de votre entrepôt (p. ex. raw.customers n’existe pas encore).
  • Database Error mentionnant une relation manquante — la table source n’a pas été chargée ; lancez d’abord dbt seed si le modèle dépend de données seed.

8. Tester vos modèles

Tests génériques intégrés : unique, not_null, accepted_values, relationships.

8.1 Définir les tests

models/schema.yml

models/schema.yml
version: 2 models: - name: stg_customers columns: - name: customer_id tests: - unique - not_null

8.2 Lancer les tests

dbt test # or scoped to one model dbt test --select stg_customers
Point de contrôleTests réussis
Vous devriez voir :
1 of 2 START test not_null_stg_customers_customer_id .......... [RUN] 1 of 2 PASS not_null_stg_customers_customer_id ................. [PASS in 0.10s] 2 of 2 START test unique_stg_customers_customer_id ............. [RUN] 2 of 2 PASS unique_stg_customers_customer_id ................... [PASS in 0.09s] Completed successfully Done. PASS=2 WARN=0 ERROR=0 SKIP=0 TOTAL=2
Vous ne voyez pas cela ?
  • FAIL sur unique_stg_customers_customer_id — des customer_id en double existent en amont ; vérifiez les données seed/source ou un fan-out de jointure dans le modèle.
  • FAIL sur not_null_stg_customers_customer_id — des valeurs nulles sont passées ; ajoutez un filtre where ou corrigez les données source.

9. Documentation

dbt génère automatiquement un site de documentation à partir de vos modèles et de vos descriptions YAML.

# build the docs dbt docs generate # serve them locally in your browser dbt docs serve

10. Aide-mémoire des commandes

CommandeRôle
dbt initCréer un nouveau projet
dbt debugTester la connexion à l’entrepôt
dbt runConstruire/exécuter tous les modèles
dbt run --select model_nameExécuter un modèle spécifique
dbt testLancer les tests de données
dbt seedCharger les fichiers CSV seed comme tables
dbt snapshotExécuter la logique de snapshot (suivi SCD)
dbt docs generateConstruire la documentation
dbt docs serveConsulter la documentation en local
dbt buildExécuter seeds, modèles, snapshots et tests ensemble
dbt cleanSupprimer les fichiers compilés/artefacts
dbt compileCompiler le SQL sans l’exécuter

11. Déroulé de la démo en direct

  1. pip install dbt-core dbt-duckdb — installer
  2. dbt init demo_project — initialiser
  3. dbt debug — confirmer la connexion
  4. Créer models/customers.sql — écrire le premier modèle
  5. dbt run — l’exécuter
  6. Ajouter un test dans schema.yml
  7. dbt test — le lancer
  8. dbt docs generate && dbt docs serve — montrer la documentation
  9. Modifier le modèle et relancer dbt run --select customers — montrer la vitesse d’itération

12. Pièges courants

PiègeCorrectif
Oublier d’activer l’environnement virtuel avant de lancer les commandes dbtL’activer d’abord (source dbt-env/bin/activate) — un exécutable dbt introuvable en est le symptôme habituel
Confondre profiles.yml et dbt_project.ymlprofiles.yml contient les informations de connexion et vit hors du projet (~/.dbt/) ; dbt_project.yml contient la configuration du projet et vit à l’intérieur
Ne pas utiliser {{ ref() }} entre les modèles, ce qui casse le suivi des dépendancesToujours référencer les autres modèles via {{ ref() }} afin que dbt puisse construire le graphe de dépendances et exécuter les modèles dans l’ordre
Lancer dbt run avant dbt seed quand des modèles dépendent des données seedLancer dbt seed d’abord, ou utiliser dbt build, qui ordonne seeds, modèles et tests pour vous

Suite

Poursuivez avec Lab 3 : Modélisation dbt Medallion — cas DHIS2, qui applique ces fondamentaux à l’entrepôt — en modélisant les données agrégées et tracker de DHIS2 à travers les couches Bronze, Silver et Gold.