TUTORIEL : CRÉATION D’UNE VERSION CONTAINERISÉE DU PROJET JAFFLE SHOP DBT
Introduction
Si vous êtes nouveau dans l’utilisation de data build tool (dbt), vous avez sans doute entendu parler de Jaffle Shop, un projet utilisé à des fins de test. Jaffle Shop est un magasin en ligne fictif, dont le projet dbt transforme des données brutes provenant d’une base de données d’application en un modèle prêt pour l’analyse des clients et des commandes.
Un problème fondamental avec le projet Jaffle Shop est qu’il s’attend à ce que les utilisateurs, qui pourraient être des nouveaux utilisateurs de dbt, configurent et hébergent une base de données locale pour que les modèles dbt puissent se concrétiser. Dans ce tutoriel, nous vous montrerons comment créer une version containerisée du projet à l’aide de Docker. Cela nous permettra de déployer une instance Postgres et de configurer le projet dbt pour qu’il lise et écrive dans cette base de données. Nous vous fournirons également un lien vers un projet GitHub que nous avons créé pour vous aider à mettre en place tous les services en un rien de temps.
Création du fichier Dockerfile et docker-compose.yml
Nous allons commencer par définir les services que nous voulons exécuter à travers Docker. Tout d’abord, nous allons créer un fichier docker-compose.yml où nous définirons deux services. Le premier service sera la base de données Postgres, et le deuxième sera un service personnalisé que nous allons créer dans la prochaine étape à l’aide d’un Dockerfile.
Nous allons créer un conteneur de l’image Docker de dbt à partir du répertoire courant (à l’aide d’un Dockerfile) et monter le répertoire courant en tant que volume à l’intérieur de ce conteneur. Nous spécifierons également que ce conteneur dépendra du service Postgres et ne démarrera que lorsque le service Postgres sera opérationnel.
Configuration de Postgres avec dbt
Pour interagir avec dbt, nous utiliserons l’Interface en Ligne de Commande (CLI) dbt. Un répertoire contenant un fichier dbt_project.yml est considéré comme un projet dbt par la CLI dbt. Nous allons créer ce fichier et spécifier quelques configurations de base, telles que le nom du projet dbt et le profil à utiliser (que nous créerons dans la prochaine étape). De plus, nous spécifierons les chemins contenant les diverses entités dbt et fournirons des configurations sur leur concrétisation.
Nous utiliserons également un fichier profiles.yml pour stocker les profils de dbt. Un profil se compose de cibles, chacune spécifiant les détails de connexion et les identifiants pour la base de données ou le data warehouse.
Modèles et semences dbt de Jaffle Shop
La source de données pour le projet Jaffle Shop se compose de fichiers CSV pour les clients, les paiements et les commandes. Nous pouvons charger ces données dans notre base de données via les semences de dbt. Nous utilisons ensuite cette source de données pour construire des modèles dbt dessus.
Exécution des services via Docker
Nous allons maintenant construire et démarrer les services Docker. Pour cela, nous devrons simplement exécuter les commandes suivantes :
$ docker-compose build
$ docker-compose up
Ces commandes exécuteront une instance Postgres, puis construiront les ressources dbt de Jaffle Shop telles que spécifiées dans le dépôt. Ces conteneurs resteront en marche pour que vous puissiez :
– Interroger la base de données Postgres et les tables créées à partir des modèles dbt
– Exécuter d’autres commandes dbt via dbt CLI
Exécution des commandes dbt via la CLI
Le conteneur dbt a déjà construit les modèles spécifiés. Cependant, nous pouvons toujours accéder au conteneur et exécuter des commandes dbt via la CLI dbt, que ce soit pour de nouveaux modèles ou pour des modèles modifiés. Pour ce faire, nous devrons d’abord accéder au conteneur en cours d’exécution.
Les deux commandes suivantes peuvent être utilisées pour lister les tables et les vues, respectivement :
postgres=# \dt
postgres=# \dv
Et vous pouvez maintenant interroger les modèles dbt via une requête SELECT :
SELECT * FROM
Conclusion
Dans ce tutoriel, nous avons créé une version containerisée du projet Jaffle Shop dbt en utilisant Docker. Nous avons vu comment configurer Postgres avec dbt, créer des modèles et des semences dbt pour le projet Jaffle Shop, exécuter les services via Docker et exécuter des commandes dbt via dbt CLI. En suivant ces étapes, vous devriez être en mesure d’exécuter la version containerisée du projet Jaffle Shop dbt avec succès.