Configurer le projet dbt et charger les données

Étude de cas : créer des modèles de données e-commerce avec dbt

Susan Sun

Freelance Data Scientist

Récap : configuration et initialisation de dbt

Installer dbt

pip install dbt

Initialiser le projet dbt looker_ecommerce

dbt init looker_ecommerce

Vérifier que la configuration fonctionne

cd looker_ecommerce
dbt debug

Répertoire auto‑généré par dbt :

Une répétition de la capture d'écran de la leçon précédente. Elle affiche une série de répertoires créés par dbt init. Le dossier racine s'appelle looker e-commerce. Les sous-dossiers sont analyses, macros, models, seeds, snapshots et tests. Il y a aussi trois fichiers : gitignore, dbt project yaml et un readme markdown.

Étude de cas : créer des modèles de données e-commerce avec dbt

Prise en main des données : centres de distribution

  • distribution_centers.csv est petit et statique, avec seulement 10 lignes

  • Extrait du fichier brut distribution_centers.csv

Un aperçu du fichier des centres de distribution contenant trois lignes de données et 4 colonnes. Les noms de colonnes sont id, name, latitude et longitude.

  • id : Identifiant unique de chaque centre de distribution
  • name : Nom du centre de distribution
  • latitude : Latitude du centre de distribution
  • longitude : Longitude du centre de distribution
Étude de cas : créer des modèles de données e-commerce avec dbt

Prise en main des données : commandes

orders.csv est volumineux et mis à jour en continu : 125 000 lignes et 9 colonnes

  • order_id : ID unique de chaque article de commande
  • user_id : ID de l'utilisateur ayant passé la commande
  • status : Statut de la commande
  • gender : Genre de l'utilisateur
  • created_at : Horodatage de création de la commande
  • returned_at : Horodatage de retour
  • shipped_at : Horodatage d'expédition
  • delivered_at : Horodatage de livraison
  • num_of_items : Nombre d'articles par commande
Étude de cas : créer des modèles de données e-commerce avec dbt

Prise en main des données : commandes

Extrait du fichier brut orders.csv :

Un aperçu du fichier des commandes contenant deux lignes de données et 9 colonnes. Les colonnes sont order id, user id, status, gender, created at, returned at, shipped at, delivered at et num of items.

Étude de cas : créer des modèles de données e-commerce avec dbt

Configurer les sources brutes et les seeds

Fichier brut « Distribution center » :

  • Caractéristiques des données :
    • Petit fichier plat (csv)
    • Données peu changeantes

Fichier brut « Orders » :

  • Caractéristiques des données :
    • Grand jeu de données
    • Données très changeantes
  • Méthode de chargement dbt :
    • dbt seed
    • Chargement ponctuel du fichier
  • Méthode de chargement dbt :
    • dbt source
    • Connecteur vers DuckDB
Étude de cas : créer des modèles de données e-commerce avec dbt

Configurer les sources brutes et les seeds

dbt init génère la structure de base :

looker_ecommerce/
  macros/
  models/
  seeds/
  snapshots/
  tests/
  dbt_project.yml
Étude de cas : créer des modèles de données e-commerce avec dbt

Configurer les sources brutes et les seeds

Charger distribution_center en tant que seed :

looker_ecommerce/
  macros/
  models/
    stg_looker__distribution_centers.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml

Dans stg_looker__distribution_centers.sql :

SELECT 
  id,
  name,
  latitude,
  longitude
FROM 
 {{ref('looker__distribution_centers')}}
Étude de cas : créer des modèles de données e-commerce avec dbt

Configurer les sources brutes et les seeds

Charger orders en tant que source :

looker_ecommerce/
  macros/
  models/
    stg_looker__orders.sql
  seeds/
  snapshots/
  tests/
  dbt_project.yml

Dans stg_looker__orders.sql :

SELECT *
FROM 
{{source('looker_ecommerce', 'orders')}}
Étude de cas : créer des modèles de données e-commerce avec dbt

Documenter les sources et les modèles de staging

Documenter les sources :

looker_ecommerce/
  macros/
  models/
    _looker__sources.yml
  seeds/
  snapshots/
  tests/
  dbt_project.yml

Dans _looker__sources.yml :

version: 2

sources:
  - name: looker_ecommerce
    tables:
      - name: orders
Étude de cas : créer des modèles de données e-commerce avec dbt

Documenter les sources et le modèle de staging

  • Exemple de fichier _looker__models.yml dans le même répertoire models :
version: 2

models:
  - name: stg_looker__distribution_centers
    description: Nom et localisation des centres de distribution    

  - name: stg_looker__orders
    description: Informations de commande, comme le statut
Étude de cas : créer des modèles de données e-commerce avec dbt

Sources, seeds, modèles et YAML

looker_ecommerce/
  macros/
  models/
    _looker__models.yml
    _looker__sources.yml
    stg_looker__distribution_centers.sql
    stg_looker__orders.sql
  seeds/
    looker__distribution_centers.csv
  snapshots/
  tests/
  dbt_project.yml
Étude de cas : créer des modèles de données e-commerce avec dbt

Récap : sous-commandes dbt

Charge les fichiers csv comme seeds

dbt seed

Crée ou met à jour tous les modèles du projet dbt

dbt run

Crée ou met à jour le modèle indiqué

dbt run --select model

Exécute tous les tests du projet dbt

dbt test 

Exécute les tests pour le modèle indiqué

dbt test --select model

Combine dbt run et dbt test en une seule commande !

dbt build
dbt build --select model
Étude de cas : créer des modèles de données e-commerce avec dbt

Récap : guides de bonnes pratiques

Structure de nommage des models :

  • utilise un double underscore pour séparer la source et le nom du modèle
  • <data_source>__<model_name>.sql

ex.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Structure de nommage des fichiers yaml :

  • commence par un underscore simple
  • utilise un double underscore pour séparer la source et le type d'artéfact
  • _<data_source>__<artifact_type>.yml

ex.

  • _looker__models.yml
  • _looker__sources.yml
1 https://docs.getdbt.com/best-practices
Étude de cas : créer des modèles de données e-commerce avec dbt

Passons à la pratique !

Étude de cas : créer des modèles de données e-commerce avec dbt

Preparing Video For Download...