6.1 事实表特性
事实表有三种类型:
- 事物事实表:
- 用于跟踪业务过程,保存的是最原始的数据,也称“原子事实表”
- 每个事务一条记录
- 增量更新
- 周期快照事实表:
- 面对具有一定时间间隔规律的事实过程,通常以每天每月每年等作为时间间隔
- 记录时间段内的聚集事实值
- 增量更新
累积快照事实表:
尽可能包含所有与业务过程相关的事实
- 只选择与业务过程相关的事实
- 分解不可加性事实为可加组件(订单和优惠)
- 在选择维度和事实之前必须先声明粒度
- 在同一个事实表中不能有多种不同粒度的事实
- 事实的单位要保一致
- 对事实的NULL值要处理
- 使用退化维度提高事实表的易用性
6.1.2 事实表设计方法
- 选择业务过程及确定事实表类型(淘宝订单:创建、付款、发货、收获)
- 声明粒度(尽量选择原子粒度)
- 确定维度
- 确定事实(金额,邮费,优惠金额等)
- 冗余维度(维度退化)
6.2 事务事实表
事物事实表,即针对发货签收等过程构建的一类事实表,用以跟踪定义业过程的个体行为,提供丰富的分析能力,作为数据仓库原子的明细数据。
- 单事务事实表:每个业务过程设计一个事实表
- 多事务事实表:
- 用快照采样状态
- 快照粒度
- 密度与稀疏性
- 半可加性,不能根据时间维度获得有意义的汇总结果
事务与快照成对设计
6.4 累积快照事实表
对于类似研究事件之间时间间隔的需求,采用累积快照事实表可以很好的解决。
特点:
- 数据不断更新
- 多业务过程日期
6.5 三种事实表的比较
| 特点 | 事务事实表 | 周期快照事实表 | 累积快照事实表 | | —- | —- | —- | —- | | 时间/时期 | 时间 | 时期 | 时间跨度较短的多个时点 | | 粒度 | 每行代表一个交易事件 | 每行代表一个时间周期 | 每行代表一个业务周期 | | 事实表加载 | 新增 | 新增 | 新增和修改 | | 事实表更新 | 不更新 | 不更新 | 业务推进时更新 | | 时间维 | 业务日期 | 时期末 | 多个业务过程的完成日期 | | 事实(举例) | 交易记录 | 时间周期内的绩效 | 限定多个业务阶段内的绩效 |