É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 :
Exemple de SQL :
SELECT * FROM ...
Exemple de YAML :
- name: customers
description: A data mart
Exemple de Jinja :
FROM {{ ref('stg_looker__users') }}
Qu'est-ce que Jinja dans dbt ?
Pourquoi est-ce utile ?
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 %}
{%...%} {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
{{...}} SELECT * FROM {{ ref('stg_looker__users') }}
{# #} {# This is a comment #}
Types d'instructions Jinja : set, loop, conditional (if/else), macros, etc.
Une instruction set crée une variable et lui assigne une valeur.
{% set ... %}
{% set country = 'Australia' %}
Utilisation
customers.sql, tel quel :{% set country = 'Australia' %}
SELECT ...
FROM ...
WHERE country = '{{ country }}'
Code compilé
dbt compile -s customers.sql :
SELECT ...
FROM ...
WHERE country = 'Australia'
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'
)
...
/target/compiled générédbt compile a généré des fichiers compilés :
Étude de cas : créer des modèles de données de commerce électronique avec dbt