Pengenalan Jinja dengan dbt

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Susan Sun

Freelance Data Scientist

dbt menggunakan tiga bahasa

dbt menggunakan tiga bahasa:

  • SQL untuk transformasi
  • YAML untuk dokumentasi dan pengujian
  • Jinja untuk templating
  • Contoh SQL:

    SELECT * FROM ...
    
  • Contoh YAML:

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

    FROM {{ ref('stg_looker__users') }}
    
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Apa itu dbt Jinja

Apa itu dbt Jinja?

  • Bahasa templating bergaya Python
  • Untuk membuat SQL dinamis
  • Digunakan di model, macro, test, dll. dbt

Mengapa berguna?

  • Kolaborasi lebih baik
  • Lebih sedikit pengulangan (DRY), kode lebih dapat digunakan ulang

Contoh Jinja di dbt:

  • Merujuk model dbt

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

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Jenis dbt Jinja

  1. Statement Jinja dibatasi {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Expression Jinja dibatasi {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Comment Jinja dibatasi {# #}
     {# This is a comment #}
    
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Statement Jinja: set

  • Jenis statement Jinja: set, loop, conditional (if/else), macro, dll.

  • Statement set membuat variabel dan memberi nilai.

    • Template:
      {% set ... %}
      
    • Contoh:
      {% set country = 'Australia' %}
      
Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Jinja dan dbt compile

Penggunaan

  • Di dalam customers.sql, seperti ini:
{% set country = 'Australia' %}

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

Kode terkompilasi

  • Output dbt compile -s customers.sql:


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

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Jinja dan dbt compile

  • Output terminal untuk satu model
  • Output 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'
)
...
  • Direktori /target/compiled yang dihasilkan
  • dbt compile membuat berkas terkompilasi:

Tangkapan layar beberapa direktori berkas yang dibuat otomatis oleh subperintah dbt compile. Folder tingkat atas adalah proyek dbt looker ecommerce. Tingkat kedua bernama `target` dan tingkat ketiga `compiled`. Di bawah `compiled` ada sejumlah direktori yang meniru struktur proyek dbt, tempat kueri terkompilasi untuk models dan tests berada.

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Ayo berlatih!

Studi Kasus: Membangun Model Data E-Commerce dengan dbt

Preparing Video For Download...