建置 dbt 資料集市與快照模型

案例研習:使用 dbt 建立電商資料模型

Susan Sun

Freelance Data Scientist

認識 dbt 資料集市模型

Data marts 是管線末端乾淨且易用的資料模型。

使用情境

  • 資料科學團隊的特徵儲存
  • 財務團隊的彙總 KPI
  • 工程團隊的延遲指標
  • 以程式碼保存 SQL,減少重工
案例研習:使用 dbt 建立電商資料模型

Looker 電商資料集市

Customers

回答問題:

我們的客戶是誰?

他們的消費行為為何?

資料粒度:

每位客戶一列

欄位範例:

客戶名稱、客戶花費金額

Products

回答問題:

我們的營收、成本與利潤是什麼?

資料粒度:

每個產品一列

欄位範例:

產品類別、營收、利潤

案例研習:使用 dbt 建立電商資料模型

Looker 電商資料集市

一個有向無環圖,顯示所有 dbt 來源與模型及其彼此關係。來源以綠色顯示,模型與資料集市以藍色顯示。

案例研習:使用 dbt 建立電商資料模型

逐步建置

步驟 1: 先在 dbt 之外優化 SQL 邏輯,再用 dbt 語法替換引用。

一個包含多個 CTE 的範例 SQL 邏輯檔螢幕截圖。

步驟 2: 建立資料測試與文件

一個 dbt models YAML 範例檔的螢幕截圖,展示某個 dbt 模型的資料表與欄位說明

步驟 3: 測試建置!(例如 dbt build

案例研習:使用 dbt 建立電商資料模型

認識 dbt 快照模型

五種訂單狀態:

ProcessingShippedCompleteCancelledReturned

資料範例:

orders 資料檔預覽,包含 2 列資料與 9 欄。欄位為 order id、user id、status、gender、created at、returned at、shipped at、delivered at、num of items。

案例研習:使用 dbt 建立電商資料模型

Orders:快照狀態變更

  • 建立檔案 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 %}
  • 執行指定的快照模型
dbt snapshot -s orders_snapshot.sql
  • 執行所有快照模型
dbt snapshot
  • 執行所有模型(含快照)
dbt build
1 https://docs.getdbt.com/docs/build/snapshots
案例研習:使用 dbt 建立電商資料模型

一起來練習吧!

案例研習:使用 dbt 建立電商資料模型

Preparing Video For Download...