Présentation de Jinja avec dbt

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

Susan Sun

Freelance Data Scientist

dbt utilise trois langages

dbt utilise trois langages :

  • SQL pour les transformations
  • YAML pour la documentation et les tests
  • Jinja pour la modélisation de gabarits
  • Exemple de SQL :

    SELECT * FROM ...
    
  • Exemple de YAML :

    - name: customers
      description: A data mart
    
  • Exemple de Jinja :

    FROM {{ ref('stg_looker__users') }}
    
Étude de cas : créer des modèles de données de commerce électronique avec dbt

Qu'est-ce que Jinja dans dbt

Qu'est-ce que Jinja dans dbt ?

  • Un langage de gabarits de style Python
  • Sert à générer du SQL dynamique
  • Présent dans les modèles, macros, tests, etc. de dbt

Pourquoi est-ce utile ?

  • Meilleure collaboration
  • Moins de répétition (DRY), code plus réutilisable

Exemples de Jinja dans dbt :

  • Référencer des modèles dbt

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Créer des boucles

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Étude de cas : créer des modèles de données de commerce électronique avec dbt

Types de Jinja dans dbt

  1. Les instructions Jinja sont délimitées par {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Les expressions Jinja sont délimitées par {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Les commentaires Jinja sont délimités par {# #}
     {# This is a comment #}
    
Étude de cas : créer des modèles de données de commerce électronique avec dbt

Instructions Jinja : set

  • Types d'instructions Jinja : set, loop, conditional (if/else), macros, etc.

  • Une instruction set crée une variable et lui assigne une valeur.

    • Modèle :
      {% set ... %}
      
    • Exemple :
      {% set country = 'Australia' %}
      
Étude de cas : créer des modèles de données de commerce électronique avec dbt

Jinja et dbt compile

Utilisation

  • Dans customers.sql, tel quel :
{% set country = 'Australia' %}

SELECT ...
FROM ...
WHERE country = '{{ country }}'

Code compilé

  • Résultat de dbt compile -s customers.sql :


SELECT ...
FROM ...
WHERE country = 'Australia'

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

Jinja et dbt compile

  • Sortie du terminal pour un seul modèle
  • Résultat de dbt compile -s customers.sql :
Running with dbt=1.8.4
...
Compiled node 'customers' is:
WITH customer_base AS (
    SELECT 
...
    FROM "dbt"."main"."stg_looker__users"
    WHERE country = 'Australia'
)
...
  • Répertoire /target/compiled généré
  • dbt compile a généré des fichiers compilés :

Capture d'écran d'une série de répertoires de fichiers générés automatiquement par la sous-commande dbt compile. Le dossier de premier niveau est le projet dbt looker ecommerce. Le deuxième niveau s'appelle `target` et le troisième `compiled`. Sous `compiled`, on trouve une série de répertoires qui reproduisent l'arborescence du projet dbt, où se trouvent les requêtes compilées des modèles et des tests.

É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...