事实表中一条记录所表达的业务细节程度称为粒度。
1. 事实类型
作为度量业务过程的事实,有可加性、半可加性和不可加性三种类型:
可加性事实指可以按照与事实表关联的任意维度进行汇总。
半可加事实只能按照特定维度汇总,不能对所有维度汇总。
不可加性事实完全不具备可加性,比如比例事实。对于不可加性事实可考虑分解为可加的组件来实现聚合。
2. 事实表类型
最常见的事实表有三种类型:事务事实表、周期快照事实表和累积快照事实表。
事务事实表用来描述业务过程,表示对应时空上某点的度量事件,保存的是最原子的数据,也称为原子事实表。在实际使用中,一般作为明细层使用,例如下单明细、支付明细等。
周期快照事实表的一行,以具有规律性的时间间隔记录事实。如每日库存快照表、每日用户余额快照表。
累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点,当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。以事务事实表中提到的订单例子为例,可以做一个和订单相关的,涉及订单下单、推单、抢单、支付等各个环节的一张订单全生命周期快照表。
此外,还有一种无事实的事实表,单纯只记录某一动作发生,其事件的量化是非数字的,比较典型的例子是访问点击日志。
3. 事实表设计原则
- 尽可能包含所有与业务过程相关的事实。
- 只选择与业务过程相关的事实。
- 分解不可加性事实为可加的组件。
- 在选择维度和事实之前必须先声明粒度。
- 在同一个事实表中不能有多种不同粒度的事实。
- 事实的单位要保持一致。
- 对事实的null值要处理,建议用0填充。
- 使用退化维度提高事实表的易用性。
4. 事实表设计方法
- 选择业务过程及确认事实表类型。
- 声明粒度。
- 确定维度。
- 确定事实。
- 冗余维度。
5. 事实表
单事务事实表,针对每个业务过程设计一个事实表。这样方便对每个业务过程进行独立的分析研究。
多事务事实表,将不同的事实放到同一个事实表中,即同一个事实表包含不同的业务过程。
多事务事实表有两种方法进行事实处理:
- 不同业务过程的事实使用不同的事实字段进行存放;如果不是当前业务过程的度量,可以考虑用0值填充。
- 不同业务过程的事实使用同一个事实字段进行存放,但增加一列作为业务过程标签,记录该事务是否在当天完成。
关于多事务事实表具体采用哪种方式进行事实处理:
在实际应用中,当业务过程度量比较相似、差异不大时,可以采取第二种多事务事实表的设计方式,使用同一个字段来表示度量数据。但这种方式存在一个问题,在同一个周期内会存在多条记录。
当不同业务过程的度量差异较大时,可以选择第一种多事务事实表的设计方式,将不同业务过程的度量使用不同字段冗余到表中,非当前业务过程则置为0,这种方式存在的问题是度量字段0值会比较多。
具体使用单事务事实表还是多事务事实表,需要从以下几点分析:
- 业务过程
多个业务过程是否放到同一个事实表中,首先需要分析不同业务过程之间的相似性和业务源系统。
比如淘宝交易的下单、支付和成功完结三个业务过程存在相似性,并且都来自于一个应用系统-交易系统,适合放到同一个事务事实表。
- 粒度和维度
在考虑是采用单事务表还是多事务表时,一个关键点是粒度和维度。
在确定好业务过程后,需要基于不同的业务过程确定粒度和维度,当不同业务过程的粒度相同,同时拥有相似维度时,可以考虑采用多事务事实表。如果粒度不同,必定是存存储在不同事务表中的。
- 事实
如果单一业务过程的事实较多,同时不同业务过程的事实又不相同,则考虑使用单事务事实表,处理更加清晰;
若使用多事务事实表,则会导致事实表零值或空值字段较多。
- 下游业务使用
单事务事实表对于下游用户而言更容易理解,关注哪个业务过程就使用相应的事务事实表;而多事务事实表包含多个业务过程,用户使用时往往较为困惑。
6. 周期快照事实表
事务事实表可以很好的跟踪一个事件,并进行度量分析。
然后,当需要一些状态度量时,比如账户余额、商品库存、卖家累积交易额等,则需要聚集与之相关的事务才能进行识别计算,也就是周期快照事实表。
周期快照事实表在确定的间隔内对实体的度量进行抽样,以研究实体的度量值,而不需要聚集长期的事务历史。
7. 累积快照事实表
对于类似于研究事件之间时间间隔的需求,事务事实表处理逻辑复杂且性能差,采用累积快照事实表可以很好解决。
快照事实表中收集到到状态度量都是半可加到,不能根据时间维度获得有意义到汇总结果。文章来源:https://www.toymoban.com/news/detail-438772.html
数仓在进行维度建模时,对于事务事实表和快照事实表往往都是成对设计,互相补充,以满足更多下游统计分析需求,特别是在事务事实表基础上可以加工快照事实表。文章来源地址https://www.toymoban.com/news/detail-438772.html
到了这里,关于基于OneData的数据仓库建设事实表设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!