Configurer le projet dbt et charger les données

Étude de cas : créer des modèles de données de commerce électronique 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 la configuration

cd looker_ecommerce
dbt debug

Répertoire des fichiers auto‑générés par dbt :

Une reprise de la capture d'écran de la leçon précédente. On y voit 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. Trois fichiers divers : gitignore, dbt project yaml et un readme markdown.

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

Découvrir les 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 de données des centres de distribution contenant trois lignes de données et 4 colonnes. Les noms de colonnes : 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 de commerce électronique avec dbt

Découvrir les données : commandes

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

  • order_id : ID unique de chaque article de commande
  • user_id : ID de l'utilisateur qui a 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 du 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 de commerce électronique avec dbt

Découvrir les 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 noms de colonnes : 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 de commerce électronique avec dbt

Configurer les sources brutes et les données seed

Fichier de données brut « Distribution center » :

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

Fichier de données brut « Orders » :

  • Caractéristiques :
    • Grand ensemble de données
    • Données très changeantes
  • Méthode de chargement dbt :
    • dbt seed
    • Charger une fois
  • Méthode de chargement dbt :
    • dbt source
    • Connecteur vers DuckDB
Étude de cas : créer des modèles de données de commerce électronique avec dbt

Configurer les sources brutes et les données seed

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 de commerce électronique avec dbt

Configurer les sources brutes et les données seed

Charger distribution_center comme 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 de commerce électronique avec dbt

Configurer les sources brutes et les données seed

Charger orders comme 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 de commerce électronique avec dbt

Documenter les sources et les modèles de staging

Pour 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 de commerce électronique 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 emplacement du centre de distribution    

  - name: stg_looker__orders
    description: Renseignements sur les commandes, p. ex. le statut
Étude de cas : créer des modèles de données de commerce électronique 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 de commerce électronique avec dbt

Récap : sous-commandes dbt

Charge les fichiers csv comme fichiers seed

dbt seed

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

dbt run

Crée ou met à jour le modèle spécifié

dbt run --select model

Exécute tous les tests du projet dbt

dbt test 

Exécute les tests pour le modèle spécifié

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 de commerce électronique avec dbt

Récap : guides de bonnes pratiques

Structure de nommage des models :

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

p. ex.

  • stg_looker__distribution_centers.sql
  • stg_looker__orders.sql

Structure de nommage des fichiers yaml :

  • commence par un seul trait de soulignement
  • utilise un double trait de soulignement entre la source et l'artéfact
  • _<data_source>__<artifact_type>.yml

p. 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 de commerce électronique avec dbt

Passons à la pratique !

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

Preparing Video For Download...