Wprowadzenie do Jinja z dbt

Studium przypadku: budowanie modeli danych e-commerce z dbt

Susan Sun

Freelance Data Scientist

dbt używa trzech języków

dbt używa trzech języków:

  • SQL – transformacje
  • YAML – dokumentacja i testy
  • Jinja – szablony
  • Przykład SQL:

    SELECT * FROM ...
    
  • Przykład YAML:

    - name: customers
      description: A data mart
    
  • Przykład Jinja:

    FROM {{ ref('stg_looker__users') }}
    
Studium przypadku: budowanie modeli danych e-commerce z dbt

Czym jest dbt Jinja

Czym jest dbt Jinja?

  • Pythonowy język szablonów
  • Umożliwia dynamiczne generowanie SQL
  • Stosowany w modelach, makrach, testach dbt itp.

Dlaczego jest przydatny?

  • Lepsza współpraca
  • Mniej powtórzeń (DRY), bardziej reużywalny kod

Przykłady Jinja w dbt:

  • Odwołania do modeli dbt

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Tworzenie pętli

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Studium przypadku: budowanie modeli danych e-commerce z dbt

Typy konstrukcji dbt Jinja

  1. Instrukcje Jinja są ujęte w {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Wyrażenia Jinja są ujęte w {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Komentarze Jinja są ujęte w {# #}
     {# This is a comment #}
    
Studium przypadku: budowanie modeli danych e-commerce z dbt

Instrukcje Jinja: set

  • Typy instrukcji Jinja: set, pętla, warunkowa (if/else), makra itp.

  • Instrukcja set tworzy zmienną i przypisuje jej wartość.

    • Szablon:
      {% set ... %}
      
    • Przykład:
      {% set country = 'Australia' %}
      
Studium przypadku: budowanie modeli danych e-commerce z dbt

Jinja i dbt compile

Użycie

  • W pliku customers.sql, jak zapisano:
{% set country = 'Australia' %}

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

Kod skompilowany

  • Wynik dbt compile -s customers.sql:


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

Studium przypadku: budowanie modeli danych e-commerce z dbt

Jinja i dbt compile

  • Wynik terminala dla jednego modelu
  • Wynik 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'
)
...
  • Wygenerowany katalog /target/compiled
  • Pliki skompilowane przez dbt compile:

Zrzut ekranu przedstawiający serię katalogów plików automatycznie wygenerowanych przez podkomendę dbt compile. Folder najwyższego poziomu to projekt dbt looker ecommerce. Drugi poziom to katalog `target`, trzeci to `compiled`. Pod katalogiem `compiled` znajdują się katalogi odzwierciedlające strukturę projektu dbt, w których przechowywane są skompilowane zapytania modeli i testów.

Studium przypadku: budowanie modeli danych e-commerce z dbt

Czas na ćwiczenia!

Studium przypadku: budowanie modeli danych e-commerce z dbt

Preparing Video For Download...