Case Study: Building E-Commerce Data Models with dbt
Susan Sun
Freelance Data Scientist
dbt uses three languages:
Example of SQL:
SELECT * FROM ...
Example of YAML:
- name: customers
description: A data mart
Example of Jinja:
FROM {{ ref('stg_looker__users') }}
What is dbt Jinja?
Why is it useful?
Examples of Jinja in dbt:
Referencing dbt models
SELECT *
FROM {{ ref('stg_looker__users') }}
Creating loops
{% for column in ['col1', 'col2'] %}
SELECT {{ column }}
FROM table_name
{% endfor %}
{%...%}
{% set order_statuses = ['Shipped', 'Complete', 'Processing'] %}
{{...}}
SELECT * FROM {{ ref('stg_looker__users') }}
{# #}
{# This is a comment #}
Types of Jinja statements: set, loop, conditional (if/else), macros, etc.
A set Jinja statement creates a variable and assigns value.
{% set ... %}
{% set country = 'Australia' %}
Usage
customers.sql
, as written:{% set country = 'Australia' %}
SELECT ...
FROM ...
WHERE country = '{{ country }}'
Compiled code
dbt compile -s customers.sql
output:
SELECT ...
FROM ...
WHERE country = 'Australia'
dbt compile -s customers.sql
output: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
directorydbt compile
generated compiled files:Case Study: Building E-Commerce Data Models with dbt