构建 dbt 数据集市与快照模型

案例研究:使用 dbt 构建电商数据模型

Susan Sun

Freelance Data Scientist

dbt 数据集市模型简介

数据集市 是管道末端干净、易用的数据模型。

用例

  • 供数据科学团队的特征库
  • 供财务团队的汇总 KPI
  • 供工程团队的时延指标
  • 通过将 SQL 作为代码存储来减少重复
案例研究:使用 dbt 构建电商数据模型

Looker 电商数据集市

Customers(客户)

回答:

我们的客户是谁?

他们的购买行为是什么?

数据粒度:

每位客户一行

示例列:

客户姓名、客户花费金额

Products(产品)

回答:

我们的收入、成本和利润是多少?

数据粒度:

每个产品一行

示例列:

产品类别、收入、利润

案例研究:使用 dbt 构建电商数据模型

Looker 电商数据集市

一个有向无环图,展示所有 dbt 源与模型及其关系。源为绿色,模型与集市为蓝色。

案例研究:使用 dbt 构建电商数据模型

分步构建

步骤 1: 在 dbt 之外打磨 SQL 逻辑,再将引用替换为 dbt 语法。

示例 SQL 逻辑文件截图,包含多个 CTE。

步骤 2: 构建数据测试与文档

示例 dbt models YAML 文件截图,展示模型与列描述。

步骤 3: 测试构建!(如 dbt build

案例研究:使用 dbt 构建电商数据模型

dbt 快照模型简介

五种订单状态:

ProcessingShippedCompleteCancelledReturned

数据示例:

订单数据文件预览,含两行示例数据与9列。列名:order id、user id、status、gender、created at、returned at、shipped at、delivered at、num of items。

案例研究:使用 dbt 构建电商数据模型

订单:状态变更快照

  • 创建文件 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...