dbt में Jinja का परिचय

Case Study: dbt के साथ E-Commerce Data Models बनाना

Susan Sun

Freelance Data Scientist

dbt तीन भाषाएँ उपयोग करता है

dbt तीन भाषाएँ उपयोग करता है:

  • ट्रांसफॉर्मेशन के लिए SQL
  • डॉक्यूमेंटेशन और टेस्टिंग के लिए YAML
  • टेम्पलेटिंग के लिए Jinja
  • SQL का उदाहरण:

    SELECT * FROM ...
    
  • YAML का उदाहरण:

    - name: customers
      description: A data mart
    
  • Jinja का उदाहरण:

    FROM {{ ref('stg_looker__users') }}
    
Case Study: dbt के साथ E-Commerce Data Models बनाना

dbt Jinja क्या है

dbt Jinja क्या है?

  • एक Pythonic टेम्पलेटिंग भाषा
  • डायनेमिक SQL जेनरेशन सक्षम करने के लिए उपयोगी
  • dbt models, macros, tests आदि में मिलता है

यह उपयोगी क्यों है?

  • बेहतर सहयोग
  • कम दोहराव (DRY), ज्यादा रीयूज़ेबल कोड

dbt में Jinja के उदाहरण:

  • dbt models को रेफ़र करना

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • loops बनाना

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Case Study: dbt के साथ E-Commerce Data Models बनाना

dbt Jinja के प्रकार

  1. Jinja के statements {%...%} में रहते हैं
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Jinja की expressions {{...}} में रहती हैं
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Jinja की comments {# #} में रहती हैं
     {# This is a comment #}
    
Case Study: dbt के साथ E-Commerce Data Models बनाना

Jinja statements: set

  • Jinja statements के प्रकार: set, loop, conditional (if/else), macros आदि

  • set Jinja statement एक वैरिएबल बनाकर वैल्यू असाइन करता है।

    • टेम्पलेट:
      {% set ... %}
      
    • उदाहरण:
      {% set country = 'Australia' %}
      
Case Study: dbt के साथ E-Commerce Data Models बनाना

Jinja और dbt compile

उपयोग

  • customers.sql में, जैसा लिखा है:
{% set country = 'Australia' %}

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

कम्पाइल्ड कोड

  • dbt compile -s customers.sql आउटपुट:


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

Case Study: dbt के साथ E-Commerce Data Models बनाना

Jinja और dbt compile

  • एक सिंगल मॉडल के लिए टर्मिनल आउटपुट
  • 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'
)
...
  • /target/compiled डायरेक्टरी जेनरेट हुई
  • dbt compile ने कम्पाइल्ड फाइलें बनाईं:

Screenshot of a series of file directories auto-generated by dbt compile subcommand. Top level folder is the looker ecommerce dbt project. Second tier is called `target` and third tier is `compiled`. Underneath `compiled directory are a series of directories that mimics the dbt project set up where the compiled queries for models and tests live.

Case Study: dbt के साथ E-Commerce Data Models बनाना

अभ्यास करते हैं!

Case Study: dbt के साथ E-Commerce Data Models बनाना

Preparing Video For Download...