
Comment connecter ses sources de données à DBT
Découvrez comment connecter efficacement vos sources de données à DBT (Data Build Tool) et optimisez vos processus de transformation de données grâce à notre guide détaillé.

Découvrez notre formation Analytics Engineer et développez une des compétences les plus recherchées sur le marché.
Hello ! Bienvenue dans notre série sur DBT !
Aujourd'hui au programme, nous allons voir comment vous pouvez connecter vos sources de données externes à DBT !
Pour plus d'infos, rendez-vous sur notre formation gratuite à DBT !
Lets go. 👇🏻
Introduction à DBT et à la gestion des sources de données
Avant toute chose, reclarifions la chose.
DBT (Data Build Tool) est un outil open source permettant aux data engineers et data analysts d’automatiser la transformation des données directement au sein d’un entrepôt de données.
Contrairement aux solutions ETL classiques, DBT suit une approche ELT (Extract, Load, Transform), où l’extraction et le chargement des données brutes se font en amont, et la transformation est réalisée directement dans la base de données via du SQL. On peut même aller plus loin avec DBT Cloud !
Pour fonctionner correctement, DBT doit pouvoir accéder à des sources de données bien définies. Ces sources peuvent être des tables provenant d’un data warehouse, des fichiers CSV stockés sur un cloud ou encore des flux issus d’outils métiers.
Une bonne gestion des sources dans DBT permet de garantir la qualité des données, d’assurer la traçabilité et d’améliorer la collaboration entre les équipes.
Cet article explique pourquoi la déclaration des sources de données dans DBT est essentielle et détaille les étapes de mise en place.

Pourquoi déclarer des sources de données dans DBT ?
Dans un projet de transformation de données, la déclaration explicite des sources de données dans DBT apporte plusieurs bénéfices essentiels.
Elle permet d’améliorer la traçabilité, d’optimiser la maintenance des modèles SQL et de garantir la qualité des données utilisées. Sans une gestion rigoureuse des sources, les risques d’erreurs augmentent et la complexité des pipelines devient difficile à maîtriser.
Voici en détail pourquoi il est indispensable de déclarer ses sources de données dans DBT.
1. Amélioration de la traçabilité et de la documentation
DBT permet d’assurer la traçabilité des données en définissant précisément leur origine et leur cheminement à travers les transformations.
Cette approche facilite l’audit des pipelines et permet aux équipes data de répondre rapidement aux questions comme :
- D’où proviennent ces données brutes ?
- Quel est le dernier point de mise à jour ?
Quelles transformations ont été appliquées avant d’arriver au tableau final ?

Prenons le cas d’un projet DBT dans une entreprise SaaS qui suit les interactions des utilisateurs sur son application.
Les données de base proviennent de différentes sources :
- Google Analytics pour les visites et événements sur le site web.
- Stripe pour les paiements et abonnements.
- Salesforce pour le suivi des clients et leads.
Sans déclaration explicite de ces sources de données dans DBT, un analyste cherchant à comprendre l’évolution du taux de conversion devrait analyser chaque table individuellement et retrouver manuellement l’origine des colonnes utilisées.
En définissant les sources dans un fichier YAML, DBT génère automatiquement une documentation interactive permettant aux équipes de visualiser facilement les modèles SQL et leurs dépendances. Cela facilite la collaboration et réduit le risque d’erreurs d’interprétation des données.
{{cours-gratuit-dbt="/brouillon"}}
2. Meilleure gestion des changements et évolutivité
Les bases de données et entrepôts de données évoluent régulièrement :
- Les noms de tables peuvent changer.
- Certaines colonnes peuvent être renommées ou supprimées.
- Les données peuvent migrer vers un nouveau schéma ou un autre entrepôt de données (par exemple, passer de PostgreSQL à Snowflake).
Si les modèles SQL font directement référence aux tables sans passer par un mécanisme centralisé, chaque changement entraîne un risque de rupture dans plusieurs pipelines.
Avec DBT, en définissant toutes les sources de données dans un fichier YAML unique, une modification dans l’infrastructure ne nécessite qu’un seul ajustement au lieu de modifier chaque requête SQL manuellement. Cela réduit la charge de maintenance et améliore la robustesse du projet.
Avant migration (PostgreSQL) :

Après migration (BigQuery):

Imaginez une startup stocke initialement ses données clients dans un schéma PostgreSQL appelé raw_data. Plus tard, elle migre ses données vers BigQuery pour mieux gérer la scalabilité.
Si les modèles SQL de transformation sont écrits en dur, chaque requête devra être modifiée pour refléter le nouveau schéma.
En revanche, si la source "customers" est bien déclarée dans DBT, il suffit de modifier la configuration YAML une seule fois pour que tous les modèles DBT continuent de fonctionner sans modification de code SQL.

3. Optimisation des performances et des mises à jour
DBT permet de structurer les pipelines de transformation des données de manière plus performante en intégrant des bonnes pratiques d’optimisation :
- Réduction des jointures inutiles en sélectionnant uniquement les colonnes essentielles.
- Minimisation des requêtes coûteuses en exploitant les fonctionnalités natives des entrepôts de données (comme les tables matérialisées sur BigQuery ou Redshift).
- Gestion de la fraîcheur des données en définissant des règles de mise à jour pour éviter l’utilisation de données obsolètes.
Code SQL non optimisé, avec jointure inutilement complexe :

Code optimisé en utilisant des modèles intermédiaires (stg_orders, stg_customers, stg_products) pour éviter de recalculer les jointures à chaque exécution:

Exemple concret :
Une entreprise d’e-commerce analyse les transactions de ses clients pour générer des tableaux de bord sur les tendances d’achat.
Si elle ne définit pas correctement la fraîcheur des données, certaines analyses pourraient être réalisées avec des données obsolètes, faussant les décisions stratégiques.
DBT propose un mécanisme de suivi des mises à jour directement dans le fichier sources.yml :

Avec cette configuration, une alerte sera déclenchée si la table "transactions" n’a pas été mise à jour depuis 12 heures, et une erreur bloquera l’exécution du pipeline après 24 heures sans mise à jour.
4. Sécurisation et contrôle des accès aux données
Définir ses sources de données dans DBT permet aussi d’améliorer la sécurité et le contrôle des accès aux bases de données.
Au lieu d’accorder à tous les utilisateurs un accès direct aux tables brutes, il est possible de centraliser les accès via DBT et de ne fournir que les modèles SQL transformés, garantissant ainsi une meilleure gouvernance des données.
Fichier sources.yml pour restreindre l’accès aux tables brutes:

Exemple concret :
Un groupe bancaire utilise DBT pour structurer ses données clients. Les tables brutes contiennent des informations sensibles (noms, adresses, données bancaires), mais seuls certains analystes ont besoin de ces détails.
En utilisant DBT, l’entreprise peut créer des modèles SQL anonymisés et ne donner accès qu’aux résultats agrégés dans un schéma dédié (analytics). Cela évite de manipuler directement des données sensibles tout en respectant les réglementations sur la confidentialité (RGPD, HIPAA).
Modèle SQL pour anonymiser les données:

Étapes pour connecter une source de données à DBT
1. Configuration du fichier profiles.yml
Le fichier profiles.yml contient les informations de connexion aux sources de données utilisées par DBT. Il permet de définir les environnements (développement, production) et de spécifier les entrepôts de données cibles.
Où le trouver ?
Ce fichier se situe généralement dans ~/.dbt/profiles.yml sur votre machine locale.
Exemple de configuration pour PostgreSQL

Bonnes pratiques :
- Ne stockez jamais de mots de passe en clair. Utilisez des variables d’environnement pour sécuriser votre connexion.
- Définissez des cibles différentes (dev, prod) pour éviter d’impacter les données en production.
2. Déclaration des sources dans un fichier YAML
Une fois la connexion configurée, il faut déclarer les sources de données dans un fichier YAML spécifique, souvent appelé sources.yml.
Exemple de déclaration d’une source dans DBT

Explication :
- raw_data est le nom de la source.
- Elle contient deux tables : customers et transactions, avec une description claire.
- Des tests sont appliqués sur transactions pour vérifier que les transaction_id sont uniques et non nuls.
3. Référence aux sources dans les modèles DBT
Une fois la source déclarée, on peut l’utiliser dans les modèles SQL de DBT avec la fonction source().
Exemple d’utilisation dans un modèle DBT (models/transform/transactions.sql)

Avantages :
- Centralisation des références aux sources pour une meilleure maintenabilité.
- Standardisation du code SQL pour éviter les erreurs.
- Meilleure collaboration entre les équipes grâce à une documentation claire.
Meilleures pratiques pour la gestion des sources de données dans DBT
1. Documentez vos sources et modèles
La documentation est essentielle pour assurer la clarté et la maintenabilité de vos modèles DBT.
Plutôt que de laisser les analystes et ingénieurs fouiller dans le code SQL pour comprendre l’origine et la transformation des données, DBT permet de générer une documentation interactive automatiquement.
2. Appliquez des tests de qualité
DBT permet d’intégrer des tests automatiques directement dans les fichiers YAML pour garantir que les sources de données sont fiables et cohérentes.
3. Sécurisez les accès aux bases de données
Dans une bonne architecture DBT, il est important de bien structurer ses données et de limiter l’accès aux tables brutes, qui peuvent contenir des informations sensibles.
Approche recommandée : utilisez des schémas dédiés
- raw : Contient les données brutes importées, non modifiées.
- staging : Contient les données nettoyées et normalisées.
- analytics : Contient les données finales prêtes pour l’analyse.
4. Mettez en place un suivi de la fraîcheur des données
Un des grands risques en analytique est d’utiliser des données obsolètes.
DBT permet de suivre la fraîcheur des sources et d’alerter si elles ne sont pas mises à jour régulièrement.

En bref :
En connectant correctement vos sources de données à DBT, vous améliorez la qualité, la traçabilité et la performance de vos pipelines de transformation.
Besoin d'aller plus loin ? Découvrez notre formation Data Engineering pour maîtriser DBT et optimiser vos processus de traitement des données.
{{formation-data-engineering="/brouillon"}}
Les derniers articles sur ce sujet

