事务事实表是什么
事务事实表是最基础的事实表形态:每行对应一个业务事件(一次下单、一笔支付、一次点击),粒度细、只追加不更新、度量可加性好,可以上卷到任意维度组合。交易、日志、流水类分析几乎都从它出发。要注意的是事件状态变化若用原地更新表达就会丢掉历史,状态演进应改成带时间戳的多行,或另建周期快照事实表。
基本信息
| 一行 | 一个业务事件,粒度声明必须明确 |
|---|---|
| 写入 | 只追加,一般不原地更新 |
| 聚合 | 可上卷到任意维度组合 |
| 典型度量 | 金额、件数、次数,均为可加或半可加 |
| 状态处理 | 状态变化用多行时间戳表达,不用原地更新 |
典型使用场景
- 交易分析:按渠道、品类、地区看下单与支付金额
- 日志分析:把访问、点击事件按维度切片
- 流水核对:与源系统逐笔比对,定位差异记录
- 漏斗搭建:下单、支付、发货各建一张,按用户维度串起来
- 时序回溯:任何时间区间的汇总都能重新计算
- 迟到数据补录:按业务键 upsert,幂等重跑不改变结果
典型查询
典型查询
-- 区间汇总:按渠道上卷
SELECT channel, sum(pay_amt) AS gmv
FROM fact_order
WHERE dt BETWEEN '2026-10-01' AND '2026-10-07'
GROUP BY channel;
-- 一笔订单对应多次状态变化:用多行时间戳表达而不是改状态列
-- order_sk | status | status_ts
-- 1001 | created | 2026-10-11 10:00:00
-- 1001 | paid | 2026-10-11 10:03:21与其他事实表对比
| 类型 | 一行代表 | 适用 |
|---|---|---|
| 事务事实表 | 一个业务事件 | 交易、日志、流水,最常用 |
| 周期快照事实表 | 一个实体一个周期 | 余额、库存等状态型度量 |
| 累积快照事实表 | 一个流程实例的多里程碑 | 订单全流程时效分析 |
| 无事实事实表 | 一组维度键的关系 | 覆盖与关系分析 |
事务事实表的价值在于可重算:任何指标都可以回到它重算一次,而不必依赖已经算好的中间结果。因此上游口径调整时,它是最可靠的回算基础。代价是数据量最大,需要靠分区、生命周期与预聚合来管理成本。