Úvod do Jinja s dbt

Případová studie: Tvorba datových modelů pro e-commerce s dbt

Susan Sun

Freelance Data Scientist

dbt používá tři jazyky

dbt používá tři jazyky:

  • SQL pro transformace
  • YAML pro dokumentaci a testování
  • Jinja pro šablonování
  • Příklad SQL:

    SELECT * FROM ...
    
  • Příklad YAML:

    - name: customers
      description: A data mart
    
  • Příklad Jinja:

    FROM {{ ref('stg_looker__users') }}
    
Případová studie: Tvorba datových modelů pro e-commerce s dbt

Co je dbt Jinja

Co je dbt Jinja?

  • Pythonovský šablonovací jazyk
  • Umožňuje dynamické generování SQL
  • Používá se v modelech, makrech, testech dbt atd.

Proč je užitečný?

  • Lepší spolupráce
  • Méně opakování (DRY), znovupoužitelný kód

Příklady Jinja v dbt:

  • Odkazování na dbt modely

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Vytváření smyček

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Případová studie: Tvorba datových modelů pro e-commerce s dbt

Typy dbt Jinja

  1. Jinja příkazy jsou uzavřeny v {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Jinja výrazy jsou uzavřeny v {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Jinja komentáře jsou uzavřeny v {# #}
     {# This is a comment #}
    
Případová studie: Tvorba datových modelů pro e-commerce s dbt

Příkazy Jinja: set

  • Typy příkazů Jinja: set, loop, podmíněné (if/else), makra atd.

  • Příkaz set vytvoří proměnnou a přiřadí jí hodnotu.

    • Šablona:
      {% set ... %}
      
    • Příklad:
      {% set country = 'Australia' %}
      
Případová studie: Tvorba datových modelů pro e-commerce s dbt

Jinja a dbt compile

Použití

  • V souboru customers.sql, jak je zapsáno:
{% set country = 'Australia' %}

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

Zkompilovaný kód

  • Výstup příkazu dbt compile -s customers.sql:


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

Případová studie: Tvorba datových modelů pro e-commerce s dbt

Jinja a dbt compile

  • Výstup terminálu pro jeden model
  • Výstup příkazu 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'
)
...
  • Vygenerovaný adresář /target/compiled
  • Soubory zkompilované příkazem dbt compile:

Snímek obrazovky zobrazující sérii adresářů automaticky vygenerovaných příkazem dbt compile. Složka nejvyšší úrovně je projekt looker ecommerce dbt. Druhá úroveň se nazývá `target` a třetí `compiled`. Pod adresářem `compiled` se nachází série adresářů napodobujících strukturu dbt projektu, kde jsou uloženy zkompilované dotazy pro modely a testy.

Případová studie: Tvorba datových modelů pro e-commerce s dbt

Pojďme si procvičit!

Případová studie: Tvorba datových modelů pro e-commerce s dbt

Preparing Video For Download...