dbt ile Jinja'ya giriş

Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Susan Sun

Freelance Data Scientist

dbt üç dil kullanır

dbt üç dil kullanır:

  • Dönüşümler için SQL
  • Belgeleme ve test için YAML
  • Şablonlama için Jinja
  • SQL örneği:

    SELECT * FROM ...
    
  • YAML örneği:

    - name: customers
      description: A data mart
    
  • Jinja örneği:

    FROM {{ ref('stg_looker__users') }}
    
Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

dbt Jinja nedir

dbt Jinja nedir?

  • Python tarzı bir şablon dili
  • Dinamik SQL üretimini sağlar
  • dbt modelleri, makroları, testlerinde vb. kullanılır

Neden yararlı?

  • Daha iyi işbirliği
  • Daha az tekrar (DRY), daha yeniden kullanılabilir kod

dbt'de Jinja örnekleri:

  • dbt modellerine başvurma

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Döngüler oluşturma

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

dbt Jinja türleri

  1. Jinja ifadeleri {%...%} ile çevrilidir
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Jinja ekspresyonları {{...}} ile çevrilidir
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Jinja yorumları {# #} ile çevrilidir
     {# This is a comment #}
    
Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Jinja ifadeleri: set

  • Jinja ifade türleri: set, loop, koşul (if/else), makrolar vb.

  • set ifadesi bir değişken oluşturur ve değer atar.

    • Şablon:
      {% set ... %}
      
    • Örnek:
      {% set country = 'Australia' %}
      
Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Jinja ve dbt compile

Kullanım

  • customers.sql içinde, yazıldığı gibi:
{% set country = 'Australia' %}

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

Derlenen kod

  • dbt compile -s customers.sql çıktısı:


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

Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Jinja ve dbt compile

  • Tek bir model için terminal çıktısı
  • dbt compile -s customers.sql çıktısı:
Running with dbt=1.8.4
...
Compiled node 'customers' is:
WITH customer_base AS (
    SELECT 
...
    FROM "dbt"."main"."stg_looker__users"
    WHERE country = 'Australia'
)
...
  • Oluşturulan /target/compiled dizini
  • dbt compile derlenmiş dosyalar oluşturur:

dbt compile alt komutu tarafından otomatik oluşturulan bir dizi dosya dizininin ekran görüntüsü. En üst klasör looker ecommerce dbt projesi. İkinci seviye `target`, üçüncü seviye `compiled`. `compiled` altında, modeller ve testlere ait derlenmiş sorguların bulunduğu, dbt proje yapısını yansıtan dizinler yer alır.

Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Hadi pratik yapalım!

Vaka Çalışması: dbt ile E-Ticaret Veri Modelleri Oluşturma

Preparing Video For Download...