Introductie van Jinja met dbt

Casestudy: e-commercedatamodellen bouwen met dbt

Susan Sun

Freelance Data Scientist

dbt gebruikt drie talen

dbt gebruikt drie talen:

  • SQL voor transformaties
  • YAML voor documentatie en tests
  • Jinja voor templating
  • Voorbeeld van SQL:

    SELECT * FROM ...
    
  • Voorbeeld van YAML:

    - name: customers
      description: A data mart
    
  • Voorbeeld van Jinja:

    FROM {{ ref('stg_looker__users') }}
    
Casestudy: e-commercedatamodellen bouwen met dbt

Wat is dbt Jinja

Wat is dbt Jinja?

  • Een Python-achtige templatingtaal
  • Maakt dynamische SQL-generatie mogelijk
  • Gebruikt in dbt-modellen, macro’s, tests, enz.

Waarom is het handig?

  • Betere samenwerking
  • Minder herhaling (DRY), meer herbruikbare code

Voorbeelden van Jinja in dbt:

  • Verwijzen naar dbt-modellen

    SELECT *
    FROM {{ ref('stg_looker__users') }}
    
  • Lussen maken

    {% for column in ['col1', 'col2'] %}
      SELECT {{ column }}
      FROM table_name
    {% endfor %}
    
Casestudy: e-commercedatamodellen bouwen met dbt

Types dbt Jinja

  1. Jinja-statements staan tussen {%...%}
     {% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
    
  2. Jinja-expressions staan tussen {{...}}
     SELECT * FROM {{ ref('stg_looker__users') }}
    
  3. Jinja-comments staan tussen {# #}
     {# This is a comment #}
    
Casestudy: e-commercedatamodellen bouwen met dbt

Jinja-statements: set

  • Types Jinja-statements: set, loop, conditioneel (if/else), macros, enz.

  • Een set-statement maakt een variabele en kent een waarde toe.

    • Sjabloon:
      {% set ... %}
      
    • Voorbeeld:
      {% set country = 'Australia' %}
      
Casestudy: e-commercedatamodellen bouwen met dbt

Jinja en dbt compile

Gebruik

  • In customers.sql, zoals geschreven:
{% set country = 'Australia' %}

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

Gecompileerde code

  • Uitvoer van dbt compile -s customers.sql:


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

Casestudy: e-commercedatamodellen bouwen met dbt

Jinja en dbt compile

  • Terminaluitvoer voor één model
  • Uitvoer van 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'
)
...
  • Gegenereerde map /target/compiled
  • dbt compile heeft gecompileerde bestanden gemaakt:

Schermafbeelding van automatisch gegenereerde mappen door de dbt compile-subopdracht. Topmap is het looker ecommerce dbt-project. Tweede niveau is `target` en derde niveau is `compiled`. Onder `compiled` staan mappen die de dbt-projectstructuur volgen, met gecompileerde queries voor models en tests.

Casestudy: e-commercedatamodellen bouwen met dbt

Laten we oefenen!

Casestudy: e-commercedatamodellen bouwen met dbt

Preparing Video For Download...