事实表类型总览

事实表按业务形态分四类:事务事实表(一次事件一行)、周期快照(固定周期状态)、累积快照(流程多阶段一行)、无事实事实表(只记录关系);选型由要回答什么问题决定。

事实表的四种形态

事实表按业务形态分四类:事务事实表(一次事件一行,只追加)、周期快照(固定周期末的状态,按周期追加)、累积快照(一个流程实例一行,随阶段推进更新)、无事实事实表(只记录关系或事件发生,没有金额类度量)。选型不是技术偏好问题,而是由「要回答什么问题」决定的——问每日存量就要用快照,拿事务表全历史累加既慢又容易算错。

基本信息

事务事实表一次事件一行,只追加,粒度最细
周期快照某周期末的状态,按周期追加
累积快照流程实例一行,随阶段推进更新
无事实事实表只记录关系或事件发生,无金额度量

典型使用场景

  • 交易流水建模:下单、支付、退款用事务事实表
  • 存量分析:每日库存、账户余额用周期快照
  • 流程效率:订单从下单到签收各阶段耗时用累积快照
  • 行为与关系记录:浏览、参会、活动覆盖用无事实事实表
  • 选型评审:拿业务问题反推该建哪类表,避免一张表包打天下

选型提问

选型提问
要统计发生了什么、有多少笔?      → 事务事实表
要统计每天有多少存量、余额多少?  → 周期快照
要分析各阶段耗时与流转效率?      → 累积快照
只关心事件是否发生、无金额度量?  → 无事实事实表

四类事实表对照

类型一行代表典型业务更新方式
事务事实表一次业务事件下单、支付、退款只追加
周期快照某周期末状态每日库存、账户余额按周期追加
累积快照一个流程实例订单从下单到签收随阶段推进更新
无事实事实表一个关系或事件记录参会、浏览、覆盖条件只追加
同一业务过程可以同时存在多种事实表:库存既做事务流水也做每日快照,各自服务不同问题,不需要二选一。
累积快照要预留每个阶段的进入时间戳,否则流程分析只能算总时长,无法定位到底卡在哪一环。

易错点

  • 用事务事实表回答每日存量问题,只能全历史累加,跑得慢且容易算错
  • 累积快照缺少阶段时间戳,流程分析拆不出各环节耗时
  • 把周期快照当流水使用,误以为快照里每行都是当天发生的业务
  • 用无事实事实表承载本该有度量的事件,后续想补度量只能重建表

数据来源与参考

  • Kimball《The Data Warehouse Toolkit》事实表类型章节
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌