数据仓库图解交互式教材
SQL 与数据加工原始输入怎样变成可信明细?
学习进度0 / 64
EN
首页课程学习原始输入怎样变成可信明细?
4-2SQL 与数据加工12 分钟

原始输入怎样变成可信明细?

用三种小而关键的处理,把原始账户余额快照整理成可核对的 DWD 明细。

DWD去重关联完整性
原始快照多一行,指标就可能多算一笔余额

原始输入怎样变成可信明细?

进入稳定加工层前,只处理三件会直接改变结果的事:给重复快照找保留依据、保留缺失维度的余额、统一表达相同含义的币种编码。

重复快照5 → 4 行按 account_id + snapshot_date 取最新
缺失关联2 条保留Customer / Product 缺失不静默丢数
编码标准化RMB → CNYA002 的余额数值不被换算

清洗的目标不是把异常藏起来,而是让进入 DWD 的每一行都有可解释的来源。

核心概念

可信明细

可信明细保留稳定的数据粒度和金额来源:重复记录有保留依据,缺失关联不会静默丢失,字段编码在进入后续聚合前已经统一。

去重不是“随便留一条”

A001 在同一个快照日出现两条余额:98,000 和 100,000。它们不是两笔余额,不能直接相加。`updated_at` 给出了一个业务上可解释的选择依据:保留更新时间更晚的 100,000。

去重规则写不出依据时,结果就无法复核。`ROW_NUMBER()` 只是表达这个选择的工具,真正需要先确定的是业务键和保留规则。

  • 业务键:account_id + snapshot_date。
  • 保留依据:updated_at DESC。
  • 变化证据:重复前 5 行,去重后 4 行;A001 只留一条。
DWD 明细 · 清洗前后对照

三类异常各自留下什么证据?

切换原始输入和 DWD 明细,查看行数、余额合计与异常标记。A003、A004 的余额仍在,只是缺失维度显示为 NULL。

正在加载交互实验…

LEFT JOIN 的价值是保住事实行

A003 的账户关系指向不存在的 Customer C404,A004 指向不存在的 Product P404。如果为了写法简短直接使用 INNER JOIN,余额记录会在关联时消失,最终只看到“少了两行”,却不知道少的是谁。

DWD 保留这两行,并把缺失的属性留为 NULL。后续是否纳入某张指标卡,可以根据指标条件决定;这和在加工中把事实行删掉是两件事。