Xây dựng data mart và snapshot model với dbt

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Susan Sun

Freelance Data Scientist

Giới thiệu data mart model trong dbt

Data mart là các mô hình dữ liệu sạch, dễ truy cập ở cuối pipeline.

Trường hợp sử dụng

  • Feature store cho nhóm khoa học dữ liệu
  • KPI tổng hợp cho nhóm tài chính
  • Chỉ số độ trễ cho nhóm kỹ thuật
  • Giảm lặp lại bằng cách lưu SQL dưới dạng mã
Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Data mart Looker e-commerce

Customers

Trả lời:

Khách hàng của chúng ta là ai?

Hành vi mua hàng của họ?

Độ hạt dữ liệu:

Một hàng mỗi khách hàng

Cột mẫu:

Tên khách hàng, số tiền đã chi

Products

Trả lời:

Doanh thu, chi phí, lợi nhuận là bao nhiêu?

Độ hạt dữ liệu:

Một hàng mỗi sản phẩm

Cột mẫu:

Nhóm sản phẩm, doanh thu, lợi nhuận

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Data mart Looker e-commerce

Sơ đồ DAG thể hiện tất cả nguồn và model dbt cùng quan hệ của chúng; nguồn màu xanh lá, model và mart màu xanh dương.

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Xây dựng theo từng bước

Bước 1: Hoàn thiện logic SQL ngoài dbt, rồi thay tham chiếu bằng cú pháp dbt.

Ảnh chụp màn hình tệp SQL mẫu với nhiều CTE.

Bước 2: Xây dựng test và tài liệu dữ liệu

Ảnh chụp màn hình tệp YAML models của dbt với mô tả bảng và cột cho một model

Bước 3: Kiểm thử build! (ví dụ: dbt build)

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Giới thiệu snapshot model trong dbt

Năm trạng thái đơn hàng:

Processing, Shipped, Complete, Cancelled, và Returned

Mẫu dữ liệu:

Bản xem trước tệp dữ liệu orders với 2 hàng dữ liệu và 9 cột. Tên cột: order id, user id, status, gender, created at, returned at, shipped at, delivered at, và num of items.

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Orders: thay đổi trạng thái (snapshot)

  • Tạo tệp 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 %}
  • Chạy một snapshot model cụ thể
dbt snapshot -s orders_snapshot.sql
  • Chạy tất cả snapshot model
dbt snapshot
  • Chạy tất cả model (bao gồm snapshot)
dbt build
1 https://docs.getdbt.com/docs/build/snapshots
Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Ayo berlatih!

Nghiên cứu tình huống: Xây dựng mô hình dữ liệu E-Commerce với dbt

Preparing Video For Download...