数据模型篇之事实表设计

第11章 事实表设计

1.事实表基础

  • 事实表特性

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。
事实表中一条记录所表达的业务细节程度被称为粒度。两种方式表达:
① 维度属性组合所表示的细节程度。
② 所表示的具体业务含义。
作为度量业务过程的事实,一般为整形或者浮点型,有三种类型:
① 可加性。按照与事实表关联的任意维度进行汇总
② 半可加性。按照特定维度
③ 不可加性。比如汇率型事实
事实表三种类型: 事务事实表、周期快照事实表、累积快照表
① 事务事实表:类似于mysql binlog日志,每一次相关的 change 都记录下来,生成一行新的数据
② 周期快照事实表:只看某个业务过程,比如订单收货,数据按订单收货时间来切分,周期可以为每天、每月等。
③ 累积快照事实表:要看整个生命周期的多个业务过程,描述过程开始和结束之间的关键性步骤事件,覆盖整个生命周期,比如:创建订单 → 买家付款 → 卖家发货 → 买家确认收货。粒度是一个订单一行数据,创建订单时间,付款时间,发货时间,收货时间,分别作为一个字段,便于计算不同业务过程的时间间隔

  • 事实表的设计原则

(1)尽可能包含所有业务过程相关的事实
(2)只选择与业务过程相关的事实
(3)分解不可加性事实为可加的组件
(4)在选择维度和事实之前必须先声明粒度
(5)在同一个事实表中不能有多种不同粒度的事实
(6)事实的单位要保持一致
(7)对事实的null值要进行处理
(8)使用退化维度提高事实表的易用性

  • 事实表设计方法

(1)选择业务过程及确定事实表类型
(2)声明粒度
(3)确定维度
(4)确定事实
(5)冗余维度

2.三种事实表

  • 事务事实表

任何类型的事件都可以被理解为 种事务。比如交易过程中的创订单、买家付款,物流过程中的揽货、发货、签收,退款中的申请退款、申请小 介入等,都可以被理解为 种事务。事务事实表, 即针对这些过程构建的一类事实表,用以跟踪定义业务过程的个体行为,提供丰富的分析能力,作为数据仓库原子的明细数据。
(1)设计过程

① 选择业务过程
② 确定粒度
③ 确定维度
④ 确定事实
⑤ 冗余维度

(2)两种事务事实表

单事务事实表
针对每个业务过程设计一个事实表,可以方便地对每个业务过程进行独立的分析研究。
多事务事实表
将不同的事实放到同一个事实表中,即同一个事实表包含不同的业务过程。
两种方法进行事务的处理:
① 不同业务过程的事实使用不同的事实字段存放。如淘宝交易事务事实表
② 不同业务过的事实采用同一个事实字段进行存放,但是增加一个业务过程标签。
实际应用中根据需要选择:
① 当不同业务过程的度量比较相似,差异不大时,可以采用第二种多事务事实表的设计方式,但是在同一周期内会存在多条记录。
② 差异较大时,可以选择第一种将不同业务过程的度量使用不同字段冗余到表中。但是度量字段零值多。

(3)两种事务事实表对比

单事务事实表多事务事实表
业务过程一个多个
粒度相互间不相关相同粒度
维度相互间不相关一致
事实只取当前业务过程中的事实保留多个业务过程中的事实,非当前业务过程的事实需要置零处理
冗余维度多个冗余过程,则需要冗余多次不同业务过程只需要冗余一次
理解程度易于理解,不会混淆难以理解,需要通过标签来限定
计算存储成本较多,每个业务过程都需要计算存储一次较少,不同业务过程融合到一起,降低了存储计算量,但当前非业务过程的度量存在大量零值
  • 周期快照事实表

(1)设计过程

① 确定快照事实表的快照粒度
② 确定快照事实表采样的状态度量

(2)特性

快照事实表的设计有一些区别于事务事实表设计的性质。事务事实表的粒度能以多种方式表达,但快照事实表的粒度通常以维度形式声明;事务事实表是稀疏的,但快照事实表是稠密的;事务事实表中的事实是完全可加的,但快照模型将至少包含一个用来展示半可加性质的事实。
① 用快照采样状态。以预定的间隔采样状态度量,这种间隔联合一个或多个维度,将被用来定义粒度,每行都将包含记录所涉及状态的事实。
② 快照粒度。快照需要采样的周期以及什么将被采样。快照周期可以按天、月、季度来统计。
③ 密度与稀疏度(重要特征)。快照事务表和事实事务表的关键区别。事务事实表是稀疏的,只有当天发生的业务过程,事实表才会记录该业务过程的事实;而快照事实表是稠密的,无论当天是否有业务过程发生,都会记录一行
④ 半可加性。在快照事实表中收集到的状态度量都是半可加的。与事务事实表的可加性事实不同,半可加性事实不能根据时间维度获得有意义的汇总结果。

(3)注意事项

① 事务与快照成对设计
② 附加事实
③ 周期到日期度量

  • 累积快照事实表

(1)设计过程

① 选择业务过程
② 确定粒度
③ 确定维度
④ 确定事实
⑤ 退化维度

(2)特点

① 数据不断更新
② 多业务过程日期

(3)特殊处理

① 非线性过程
② 多源过程
③ 业务过程取舍

(4)物理实现

① 全量表的形式,以日期分区。 每天分区存储昨天的全量数据和今天的增量数据合并的结果。适用于全量数据比较少的情况。
② 全量表的变化形式。主要针对事实表数据量很大的情况,预测较短生命周期的业务实体从产生到消亡的时间间隔。比如设计最近200天的交易订单累计快照事实表,每天的分区存储最近200天的交易订单,200天前的存储在归档表中。
③ 以业务实体的结束时间分区。每天的分区存放当天结束的数据,设计一个时间非常大的分区(9999-12-31)存放截止至今未结束的数。可能存在极特殊情况,业务系统无法标识业务实体的结束时间,比如物流订单),依赖其他公司的数据,且是批量回传无法保证准确率。解决方法一:使用相关业务系统的业务实体的结束标志作为此系统的结束标志,如订单结束了物流也结束了。解决方法二:使用前端业务系统确认口径或使用归档策略,可以用定期的归档时间作为结束日期。

3.三种事实表比较

事务事实表周期快照事实表累计快照事实表
时期/时间离散事务时间点周期快照事实表累积快照事实表
日期维度事务日期快照日期相关业务过程涉及的多个日期
粒度每行代表实体的一个事务每行代表周期的一个实体每行代表一个实体的生命周期
事实事务事实累积事实相关业务过程事实和时间间隔事实
事实表加载插入插入插入与更新
事实表更新不更新不更新业务过程变更时更新

4.无事时的事实表

在维度模型中,事实表用事实来度量业务过程,不包含事实或度的事实表称为“无事实的事实表”。主要有以下两种:

(1)事件类,记录发生的事件
(2)条件、范围或资格类的,记录维度与维度多对多之间的关系

5.聚集型事实表

数据仓库的性能是数据仓库建设是否成功的重要标准之一。聚集主要是通过汇总明细粒度数据来获得改进查询性能的效果。通过访问聚集数据,可以减少数据库在响应查询时必须执行的工作量,能够快速响应用户的查询,同时有利于减少不同用户访问明细数据带来的结果不一致问题。

  • 聚集的基本原则

一致性
避免单一表设计
聚集粒度可不同

  • 聚集的基本步骤

(1)确定聚集维度
(2)确定一致性上钻
(3)确定聚集事实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Listen·Rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值