dbt : qu’est-ce que c’est ?
dbt (Data Build Tool) est un outil open-source de transformation de données de type ELT (Extract Load Transformation), écrit en Python.
dbt permet aux utilisateurs de réaliser des transformations directement dans l’entrepôt de données, avec du SQL ou du Python.
Lancé par Fishtown Analytics (maintenant connu sous le nom de dbt Labs), dbt a été conçu avec l'idée de rendre les processus de transformation de données plus efficaces et transparents, en appliquant des pratiques d'ingénierie logicielle, telles que le contrôle de version et les tests automatisés.
Le contexte d’apparition de dbt
La transformation des données est une composante essentielle des Modern Data Platforms. Elle permet de convertir des données brutes en informations précieuses pour guider les décisions stratégiques. Avec l'augmentation des volumes de données, ce processus est devenu un enjeu majeur pour les entreprises qui cherchent à réduire les temps de processing et coûts associés.
Historiquement, plusieurs méthodes ont été utilisées pour effectuer ces transformations, mais les transformations SQL se sont imposées comme la norme. Ces transformations sont souvent orchestrées par des procédures stockées ou des orchestrateurs de workflows comme Apache Airflow. Ces approches présentent cependant des défis majeurs, notamment en termes de maintenance du code et de gestion des versions, car elles ne sont pas bien adaptées aux langages SQL traditionnels.
C'est dans ce contexte que Data Build Tool (dbt) a été créé. Dans cet article, nous explorerons en détail ce qu'est dbt, ses caractéristiques principales, les avantages qu'il offre par rapport au SQL traditionnel et comparerons les deux offres principales de dbt pour vous aider à déterminer quelle option est la plus adaptée à vos besoins.
dbt : La solution aux défis du ELT ?
Avec l'évolution du paradigme ELT (en opposition à l’ETL), qui consiste à transférer les données brutes vers un entrepôt de données et de les transformer par la suite, de nouvelles solutions de transformations de données sont apparues. Ces solutions facilitent la transformation des données après leur réplication de diverses sources vers un dépôt centralisé. Toutefois, la transformation (ou modélisation) de ces données demeure un défi significatif.
Pour y remédier, certaines entreprises se tournent vers des solutions personnalisées comme Airflow, qui nécessitent une programmation en Python et une infrastructure conséquente, rendant cette approche peu accessible.
D'autres préfèrent utiliser des interfaces graphiques comme Looker pour la modélisation des données, mais ces options impliquent souvent des coûts de licence élevés et des défis en matière de maintenance.
C'est ici que dbt entre en jeu, en offrant une couche d'orchestration supplémentaire pour gérer l'entreposage des données. dbt se distingue par sa capacité à retraiter les données stockées dans un datawarehouse, représentant ainsi le "T" de la chaîne ELT.
Les fonctionnalités de dbt et les avantages qu’elles apportent
dbt offre différentes fonctionnalités pour transformer la manipulation de données en un processus structuré, efficace, et collaboratif.
Flexibilité des modèles SQL
L'une des principales caractéristiques qui distingue dbt des différents outils est la flexibilité de ses modèles SQL. Cette flexibilité est rendue possible par plusieurs fonctionnalités :
- Jinja Templating : dbt utilise Jinja, un moteur de templates, pour écrire des scripts SQL. Cela permet d'incorporer des logiques conditionnelles, des boucles, et des variables dans les scripts SQL, rendant les modèles dynamiques et réutilisables.
- Réutilisation de code : Avec dbt, il est facile de créer des macros et des packages réutilisables. Ces éléments peuvent être intégrés dans différents projets, améliorant ainsi la cohérence et réduisant le temps de développement.
- Dépendances modulaires (Lineage) : dbt permet de construire des modèles de données en définissant des dépendances. Cela signifie que vous pouvez spécifier l'ordre dans lequel les transformations doivent être exécutées, garantissant que les données sont toujours traitées de manière logique.
Pour ce faire, dbt génère automatiquement des graphiques de lignée des données qui montrent les dépendances entre les différents modèles. Ces graphiques visuels permettent aux data engineers de :
- Visualiser les flows de travail pour comprendre rapidement comment les transformations de données sont organisées.
- Identifier les dépendances : voir les relations entre les sources de données, les transformations et les analyses finales.
- Dépanner et optimiser : localiser les problèmes et les goulets d'étranglement dans les pipelines de données en comprenant les chemins de dépendance.
Versionning et échange de projets simplifiés
dbt intègre des pratiques de software development, notamment le contrôle de version et la CI/CD.
- Contrôle de version : chaque transformation de données est écrite en tant que code et peut être suivie via un système de contrôle de version comme Git. Cela signifie que les équipes peuvent collaborer plus efficacement, avec un historique des modifications, et la capacité de revenir à des versions précédentes en cas de problème.
- CI/CD : dbt peut être intégré dans les pipelines CI/CD pour automatiser le test et le déploiement de modèles de données. Cela garantit que toutes les modifications subissent un processus de validation avant d'être appliquées à la base de données de production, réduisant ainsi le risque d'erreurs et accélérant le cycle de vie du développement.
Test et Documentation
dbt permet d'automatiser les tests de qualité des données, notamment les data tests et les unit tests, garantissant ainsi que les données transformées répondent aux attentes et aux normes définies. Cela augmente considérablement la fiabilité des données.
dbt automatise la génération de la documentation autour des descriptions, des dépendances du modèle, du modèle SQL, des sources et des tests. La documentation affiche les modèles existants et des informations détaillées sur chacun et génère des graphiques de lignage. Elle est constituée de trois fichiers et peut être déployée très facilement.
Connexions aux bases de données
dbt offre une compatibilité étendue avec plusieurs des principales plateformes de données cloud, telles que BigQuery, Snowflake, Amazon RedShift, PostgreSQL.
En tant qu'outil open source, dbt bénéficie également du soutien d'une communauté active qui développe des connecteurs pour étendre sa compatibilité. Le catalogue de la communauté comprend notamment des connecteurs pour DuckDB, ClickHouse ou MySQL.
Cet outil est un pilier de la Modern Data Stack (voir notre article à ce sujet) et est conçu pour s’interfacer facilement avec une multitude d’autres solutions.
La structure d’un projet dbt
Les projets dbt possèdent une architecture spécifique, conçue pour simplifier la gestion et optimiser les performances. Au cœur de cette configuration se trouve le dossier models, l’élément essentiel dans cette configuration, contenant les modèles SQL qui définissent les transformations des données. Ces modèles sont organisés en sous-dossiers reflétant souvent la logique métier ou les étapes de transformation.
Le dossier tests permet d'intégrer des tests de validation des données, assurant leur intégrité et qualité.
La configuration du projet se fait via le fichier dbt_project.yml, centralisant les informations essentielles comme la version du projet, la configuration des modèles, et les dépendances.
Les dossiers macros et snapshots ajoutent des fonctionnalités avancées comme des scripts réutilisables et la capture de l'état des données dans le temps, tandis que seeds permet de gérer des jeux de données statiques.
Le dossier analyses dans un projet dbt est destiné à contenir des analyses SQL qui sont exécutées pour extraire des insights ou des rapports ad hoc à partir des données transformées. Ces analyses ne sont généralement pas des transformations de données que vous allez inclure dans le flux de travail régulier.
La matérialisation des modèles dans dbt
La matérialisation dans dbt est un concept clé qui détermine comment les modèles de données sont physiquement représentés dans votre entrepôt de données. En contrôlant la matérialisation, dbt offre une flexibilité considérable pour optimiser les performances, la gestion de l'espace, et la vitesse d'exécution des requêtes. dbt propose aujourd’hui quatre principales méthodes de matérialisation qui sont :
- View : Créer une vue dans la base de données, exécutée à la demande, sans stockage physique des données.
- Table : Stocke les données transformées physiquement, améliorant les performances des requêtes en évitant des calculs répétés.
- Ephemeral : Crée des tables temporaires non stockées dans l'entrepôt, utilisées comme intermédiaires dans des transformations.
- Incremental : Insère ou met à jour des lignes dans une table existante, ajoutant ou modifiant uniquement les données changées depuis la dernière exécution.
dbt Core & dbt Cloud : Quelle est la différence ?
dbt propose deux versions : une version open-source Core, et une version Cloud.
dbt Labs a dévoilé de nouvelles fonctionnalités majeures pour dbt Cloud afin de résoudre certains des plus grands problèmes auxquels les organisations sont confrontées. Alors que dbt continue de renforcer et d'améliorer les capacités de son offre cloud, les entreprises doivent prendre le temps de déterminer quelle offre leur convient le mieux.
dbt Core
La version open-source de l'outil a longtemps été la solution privilégiée pour transformer les données. Avec la capacité d'exécuter directement les modèles dbt dans un data warehouse, dbt Core s'intègre de manière transparente dans les flux de travail de données existants.
L’outil est gratuit mais les organisations souhaitant exécuter dbt Core en production sont tenues de gérer elles-mêmes l'infrastructure de déploiement, ce qui signifie qu’elles doivent posséder les ressources nécessaires pour maintenir et faire évoluer l'infrastructure.
dbt Cloud
dbt Cloud est la version SaaS fully-managed de dbt, visant à améliorer l'expérience d'utilisation de dbt et à rendre accessible l’outil aux utilisateurs non techniques.
L’offre cloud propose également des fonctionnalités supplémentaires comme la possibilité de programmer des exécutions et de les orchestrer pour s'assurer qu'elles se déroulent dans l'ordre approprié, en tenant compte des dépendances entre les modèles. Les utilisateurs peuvent également gérer le passage de ces modèles de données à travers différents environnements de développement, de test et de production, facilitant ainsi un cycle de développement de données plus structuré et contrôlé.
dbt Cloud étend les capacités de dbt Core en fournissant une plateforme basée sur le cloud pour l’Analytics Engineering. Ce service entièrement géré offre un environnement collaboratif et une interface utilisateur pratique, permettant aux équipes de travailler de manière fluide sur leurs projets d'analyse.
Comment choisir entre dbt cloud et dbt core ?
Il est crucial de réfléchir à qui utilisera l'outil dbt. Si votre équipe est composée principalement de profils techniques, tels que des Data Engineers, nous recommandons d'utiliser dbt Core. Cette offre gratuite est bien adaptée pour ceux qui peuvent avoir la main sur leur solution, organiser les tâches, gérer la documentation et mettre en place un système local efficace. Cependant, pour les équipes ayant moins de profils techniques, il peut être judicieux d'envisager une solution plus complète comme dbt Cloud, qui offre des fonctionnalités supplémentaires et plus accessibles de gestion et de collaboration.
En conclusion, dbt représente un choix judicieux pour toute organisation cherchant à rationaliser ses opérations de transformation de données. En fournissant un cadre structuré pour la manipulation des données, et il s’est imposé comme un outil essentiel. Avec ses fonctionnalités puissantes telles que la documentation automatique, le lineage des données, les tests, le versioning, et une intégration transparente avec les principales plateformes de données cloud, dbt facilite la collaboration entre data engineers et data analysts, assurant une qualité et une fiabilité accrues des données.
Que vous optiez pour dbt Core ou dbt Cloud, l'adoption de dbt est un pas vers des processus de données plus efficaces, collaboratifs et fiables. Avec cet outil, le futur de la transformation des données semble non seulement prometteur mais également accessible à tous.
dbt est aujourd’hui un choix incontournable pour toute entreprise souhaitant moderniser sa Data Stack et assurer la fiabilité de ses données. En tant qu'experts en dbt et en création de Data Platforms innovantes et complètes, nous sommes prêts à vous accompagner dans votre évolution et à transformer vos données en informations de valeur. Contactez-nous pour savoir comment nous pouvons répondre à vos besoins spécifiques !