Побудова дата-мартів і snapshot-моделей у dbt

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Susan Sun

Freelance Data Scientist

Знайомство з моделями дата-мартів у dbt

Дата-марти — це чисті й зручні моделі даних наприкінці конвеєра.

Приклади використання

  • Feature stores для команди data science
  • Агреговані KPI для фінансової команди
  • Метрика затримки для інженерної команди
  • Зменшує дублювання, зберігаючи SQL як код
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Дата-марти e-commerce у Looker

Customers

Відповідає на запитання:

Хто наші клієнти?

Яка їхня поведінка під час покупок?

Зернистість даних:

Один рядок на клієнта

Приклади стовпців:

Ім'я клієнта, сума витрат клієнтів

Products

Відповідає на запитання:

Які наші виручка, собівартість і прибуток?

Зернистість даних:

Один рядок на продукт

Приклади стовпців:

Категорія продукту, виручка, прибуток

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Дата-марти e-commerce у Looker

Орієнтований ациклічний граф, що показує всі джерела й моделі dbt та їхні зв'язки; джерела позначені зеленим, моделі й марти — синім.

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Побудова крок за кроком

Крок 1: Відшліфуйте логіку SQL поза dbt, потім замініть посилання на синтаксис dbt.

Знімок екрана з файлом логіки SQL із кількома CTE.

Крок 2: Додайте тести даних і документацію

Знімок екрана з прикладом YAML-файла моделей dbt з описами таблиці та стовпців для моделі dbt

Крок 3: Протестуйте збірку! (напр., dbt build)

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Знайомство зі snapshot-моделями в dbt

П'ять статусів замовлення:

Processing, Shipped, Complete, Cancelled і Returned

Зразок даних:

Попередній перегляд файлу даних orders із двома рядками даних і 9 стовпцями. Назви стовпців: order id, user id, status, gender, created at, returned at, shipped at, delivered at, num of items.

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Orders: зміна статусу у snapshot

  • Створіть файл orders_snapshot.sql
{% snapshot orders_snapshot %}
{{
    config(target_schema='main',
      unique_key='order_id',
      strategy='timestamp',
      updated_at='created_at')
}}

SELECT * 
FROM 
{{source('looker_ecommerce', 'orders')}}

{% endsnapshot %}
  • Запустіть окрему snapshot-модель
dbt snapshot -s orders_snapshot.sql
  • Запустіть усі snapshot-моделі
dbt snapshot
  • Запустіть усі моделі (включно зі snapshot)
dbt build
1 https://docs.getdbt.com/docs/build/snapshots
Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Давайте потренуємось!

Кейс-стаді: створення моделей даних для e-commerce за допомогою dbt

Preparing Video For Download...