Premiers pas avec DBT

Ludovic_Hamard
Mistertemp’s kitchen
4 min readJan 5, 2023

--

L’année 2022 a été riche en nouveautés pour Mistertemp. Notre équipe Data a moins de 3 ans et nous avons redoublé d’efforts pour construire une stack technique qui correspond à nos ambitions présentes, mais surtout futures. Notre architecture repose sur les 3 piliers suivants, Snowflake, Fivetran et Looker pour former notre socle d’analyse.

Lors de workshops, nous avions identifié des lacunes sur la préparation et la transformation de la donnée. Dans notre stack, ces étapes sont gérées par notre outil d’ETL, Fivetran. Cependant, chaque modification implique d’extraire à nouveau les données pour appliquer la couche de transformation, puis de charger les données vers notre Data Warehouse.

Ainsi, nous avons étudié les solutions sur le marché et échangé avec des entreprises confrontées aux mêmes problématiques. Un outil était souvent cité lors de nos échanges, DBT. Quelques mois se sont passés sans pouvoir se dégager du temps pour essayer la solution.

Finalement, lors du Summit Snowflake, qui se tenait à Las Vegas pendant le mois de juin, un grand nombre d’acteurs de la data était présent. Ainsi, nous avons eu l’opportunité d’échanger avec les équipes DBT et de participer à leurs ateliers.

DBT Cloud

De retour en France, nous avons commencé à prendre en main l’outil dans sa version cloud. Il s’agit d’une interface web avec une CLI embarquée et une interface de configuration pour se connecter aux différents services.

Lors de la prise en main de l’outil, nous avons entrepris un PoC afin de s’assurer que la solution tenait ses promesses. Lors de ce projet, nous avons commencé à prendre en main le modèle de données proposé par l’outil :

- Staging, nous allons retrouver nos modèles connectés à nos sources de données. Ici de légères transformations sont opérées, telles que, le nommage, le casting, le tri,

- Intermediate, nous faisons appel à nos staging, afin de construire des objets plus spécifiques (union, join, …),

- Marts, notre projet business final est stocké dans ce dossier et il sera le seul modèle à être exploité par nos utilisateurs finaux.

DBT Core

Ensuite, lorsque le PoC a été validé, c’est-à-dire, nos premiers modèles de données ont été réalisés de bout en bout sur DBT et disponibles sur notre outil de BI, Looker. Nous avons amorcé le choix de nous tourner vers la solution Core de DBT.

Cette solution est la variante gratuite de DBT, cependant l’ensemble des éléments gravitant autour de son écosystème doit être géré par nos soins. En effet, nous avons :

- Configurer DBT en local,

- Nous avons créé un nouveau projet avec GitHub (versionning, CI/CD),

- Configuré Airflow, qui nous permet de planifier nos transformations,

- Configuré les connexions et les rôles pour l’accès à Snowflake.

En passant à la solution Core, nous avons continué la configuration des autres modules mis à disposition par l’outil. Ainsi, nous avons créé des bases de données, des schémas et des rôles distincts au sein de notre Data Warehouse afin de compartimenter les modèles sur lesquels nous travaillons et ceux exploités en production.

Puis, nous avons intégré les premiers tests au sein de nos fichiers sources. Cela nous permet de vérifier certains éléments de fiabilité tels que :

- La fraîcheur de la donnée,

- L’unicité de nos clés primaires,

- Les intervalles de valeurs, pour les champs concernés.

L’ensemble de ces tests sont mis à disposition dans le package DBT natif.

Dans un second temps, nous souhaiterions pousser plus loin les tests avec l’aide de la librairie dbt-expectations. Elle met à disposition un ensemble de fonctions permettant d’enrichir le catalogue de tests.

Le dernier module intégré à nos modèles est la documentation. Comme beaucoup d’équipe Data, nous produisons beaucoup de supports sous différentes formes, sans prendre le temps de produire de la documentation. Cette phase est cruciale pour nous, afin d’enrichir notre catalogue de données et ainsi garder une trace des projets réalisés.

Nous avons utilisé « docs blocks », une macro Jinja permettant de réunir au sein d’un fichier les définitions des colonnes, puis réutiliser ces dernières dans le fichier de définition du modèle.

Premier projet métier avec DBT

Un des premiers projets sur lequel nous avons travaillé, a été l’élaboration des marges pour nos agences. Ainsi, nous avons centralisé nos transformations de données pour un projet historique depuis la création de l’équipe Data chez Mistertemp.

Ainsi, nous avons été capables de :

- Rassembler nos sources de données que nous avons nettoyées pour conserver les informations nécessaires,

- Effectuer nos calculs intermédiaires pour la construction de nos marges chez Mistertemp,

- Enfin, de créer un produit final reprenant les indicateurs essentiels au pilotage des marges et de leur activité globale pour nos collaborateurs.

Le graphique ci-dessous explique les différentes étapes et les solutions utilisées.

En résumé, DBT est un outil faisant partie intégrante de la stack Data chez Mistertemp. Nous avons la volonté d’exploiter le potentiel de la solution et continuer d’échanger avec la communauté pour partager nos retours d’expérience.

Ressources

Documentation officielle pour DBT Cloud:

Documentation officielle pour DBT Core:

Sessions d’apprentissage réalisées par les équipes DBT:

--

--

Data Analyst/Engineer at @Mistertemp. Also I love sports, animals and trips ;)