目录
事实表基础
事实表的类型
- 事务事实表
- 周期快照事实表
- 累计快照事实表
事实表的设计原则
- 尽快能多的包含于业务过程相关的事实
- 只选择与业务相关的事实
- 分解不可加事实为可加的组件
- 在选择维度和事实之前必须先声明粒度
- 在同一个事实表中不能含有不同粒度的事实
- 事实的单位要保持一致
- 对于事实的null值要进行处理
- 使用退化维度提高事实表的易用性
事实表的设计方法
- 选择业务过程及确定事实表类型
- 声明粒度
- 确定维度
- 确定事实
- 冗余维度
事物事实表
设计过程
- 选择业务过程
- 确定粒度
- 确定维度
- 确定事实
- 冗余维度
单事务事实表
- 即针对每一个业务过程建立一个事实表
多事务事实表
- 即不同的事实放在同一个事实表中,通常有两种处理方式
a. 不同业务过程的事实使用不同的事实字段进行存放;例如支付时间、下单时间
b. 不同业务过程的事实使用同一个字段存放,但是加业务过程标识来进行区分。例如是否支付 - 两种处理方式选择依据
a. 当不同的业务过程度量比较相似,差异不大时,采用第二种方式
b. 相反差异较大的时候选择第一种处理方式
单事务事实表与多事务事实表的对比
- 业务过程:需要看业务之间是否有关联关系,是否有相似性
- 粒度和维度:必须是相同的粒度,需要有相似的维度。
- 事实:如果单业务过程事实较多,同时不同业务过程事实又不相同,使用单事务事实表。
- 下游业务使用:单事务事实表下游使用更易理解。
- 计算存储成本:
事实的设计准则
- 事实的完整性
- 事实的一致性
- 事实的可加性
周期快照事实表
一些特性
- 有些事实是需要累计之前的事实才可以得到,比如账户余额等,买卖家等级等,
- 事务事实表的粒度有多种方式表达,但快照事实表一般以维度的形式表达,比如历史至今,本年至今等
- 事务事实表是稀疏的,快照事实表是稠密的
- 事务事实表是可加的,但快照事实表至少包含一个半可加事实
- 一般都可以使用事务事实表进行汇总产出。
一些实例
- 单维度的每天快照事实表,比如单种维度历史至今,自然月至今等
- 混合维度的每天快照事实表
- 全量快照事实表,比如淘宝评价事实表
注意事项
- 事物与快照成对设计
- 附加事实
- 周期到日期的度量
累计快照事实表
设计过程
- 概念,用于解决时间之间的时间间隔需求,类似于生命周期模型
- 选择业务过程,一般是选择完成的多个业务过程
- 确定粒度
- 确定维度
- 确定事实
- 退化维度
特点
- 数据不断的更新
- 多业务过程日期
物理实现
- 全量表的形式
- 全量表的变化形式,选择一个合适的时间间隔
- 以业务实体的结束时间分区
a. 以业务实体的结束标志
b. 与前端业务确定口径或使用全段归档策略
三种事实表的比较
无事实事实表
- 事件类的,记录时间的发生。比如日志类的事实表。
- 条件、范围或资格类的,记录维度与维度多对多之间的关系。
聚集型事实表
- 其实就是汇总层数据
- 基本原则
a. 一致性
b. 避免但仪表的设计,不要再同一个表中处处不同层次的聚集数据
c. 聚集粒度可以不同 - 聚集的基本步骤
a. 确定聚集维度
b. 确定一致性上钻
c. 确定聚集事实
总结自《阿里大数据之路》