Introducere în Jinja cu dbt

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Susan Sun

Freelance Data Scientist

dbt folosește trei limbaje

dbt folosește trei limbaje:

  • SQL pentru transformări
  • YAML pentru documentare și testare
  • Jinja pentru șabloane
  • Exemplu SQL:

    SELECT * FROM ...
    
  • Exemplu YAML:

    - name: customers
      description: A data mart
    
  • Exemplu Jinja:

    FROM {{ ref('stg_looker__users') }}
    
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Ce este dbt Jinja

Ce este dbt Jinja?

  • Un limbaj de șablonare de tip Pythonic
  • Permite generarea dinamică de SQL
  • Folosit în modele, macro-uri, teste dbt etc.

De ce este util?

  • Colaborare mai bună
  • Mai puțină repetiție (DRY), cod reutilizabil

Exemple de Jinja în dbt:

  • Referențierea modelelor dbt

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Crearea buclelor

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Tipuri de Jinja în dbt

  1. Instrucțiunile Jinja sunt incluse în {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Expresiile Jinja sunt incluse în {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Comentariile Jinja sunt incluse în {# #}
     {# This is a comment #}
    
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Instrucțiuni Jinja: set

  • Tipuri de instrucțiuni Jinja: set, loop, condiționale (if/else), macro-uri etc.

  • O instrucțiune Jinja de tip set creează o variabilă și îi atribuie o valoare.

    • Șablon:
      {% set ... %}
      
    • Exemplu:
      {% set country = 'Australia' %}
      
Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Jinja și dbt compile

Utilizare

  • În customers.sql, scris astfel:
{% set country = 'Australia' %}

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

Cod compilat

  • Rezultatul dbt compile -s customers.sql:


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

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Jinja și dbt compile

  • Rezultat în terminal pentru un singur model
  • Rezultatul 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'
)
...
  • Directorul /target/compiled generat
  • Fișiere compilate generate de dbt compile:

Captură de ecran cu directoarele de fișiere generate automat de subcomanda dbt compile. Folderul de nivel superior este proiectul dbt looker ecommerce. Al doilea nivel se numește `target`, al treilea `compiled`. Sub directorul `compiled` se află o serie de directoare care reproduce structura proiectului dbt, unde sunt stocate interogările compilate pentru modele și teste.

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Să exersăm!

Studiu de caz: Construirea modelelor de date pentru e-commerce cu dbt

Preparing Video For Download...