Introduzione a Jinja con dbt

Case Study: creazione di modelli di dati E‑Commerce con dbt

Susan Sun

Freelance Data Scientist

dbt usa tre linguaggi

dbt usa tre linguaggi:

  • SQL per le trasformazioni
  • YAML per documentazione e test
  • Jinja per il templating
  • Esempio di SQL:

    SELECT * FROM ...
    
  • Esempio di YAML:

    - name: customers
      description: A data mart
    
  • Esempio di Jinja:

    FROM {{ ref('stg_looker__users') }}
    
Case Study: creazione di modelli di dati E‑Commerce con dbt

Cos'è Jinja in dbt

Cos'è Jinja in dbt?

  • Un linguaggio di templating “pythonic”
  • Serve per generare SQL dinamico
  • Presente in modelli, macro, test, ecc.

Perché è utile?

  • Migliora la collaborazione
  • Meno ripetizioni (DRY), più riuso

Esempi di Jinja in dbt:

  • Referenziare modelli dbt

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Creare loop

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Case Study: creazione di modelli di dati E‑Commerce con dbt

Tipi di Jinja in dbt

  1. Le istruzioni Jinja sono in {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Le espressioni Jinja sono in {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. I commenti Jinja sono in {# #}
     {# This is a comment #}
    
Case Study: creazione di modelli di dati E‑Commerce con dbt

Istruzioni Jinja: set

  • Tipi di istruzioni Jinja: set, loop, condizionali (if/else), macro, ecc.

  • Un'istruzione set crea una variabile e le assegna un valore.

    • Template:
      {% set ... %}
      
    • Esempio:
      {% set country = 'Australia' %}
      
Case Study: creazione di modelli di dati E‑Commerce con dbt

Jinja e dbt compile

Uso

  • In customers.sql, come scritto:
{% set country = 'Australia' %}

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

Codice compilato

  • Output di dbt compile -s customers.sql:


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

Case Study: creazione di modelli di dati E‑Commerce con dbt

Jinja e dbt compile

  • Output del terminale per un singolo model
  • Output di 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'
)
...
  • Directory generata /target/compiled
  • dbt compile ha generato i file compilati:

Screenshot di una serie di directory di file auto-generate dal sottocomando dbt compile. La cartella di primo livello è il progetto dbt looker ecommerce. Il secondo livello è `target` e il terzo è `compiled`. Sotto `compiled` ci sono varie directory che rispecchiano la struttura del progetto dbt, dove vivono le query compilate per modelli e test.

Case Study: creazione di modelli di dati E‑Commerce con dbt

Ayo berlatih!

Case Study: creazione di modelli di dati E‑Commerce con dbt

Preparing Video For Download...