综述
当我们在实际工作过程中涉及到一些指标的计算比如账户余额、买卖家星级 商品库存、卖家累积交易额等计算中,则需要聚集与之相关的事务才能进行识别计 ;或者聚集事务无法识别 ,比如 温度等。对于这些状态度量,事务事实表是无效率的,而这些度量也和度量事务本身一样是有用的 ,因此, 维度建模理论给出了第二种常见的事实表一一周期快照事实表,简称“快照事实表”。
快照事实表:在确定时间间隔内对实体的度量进行抽样,这样可以很容易的研究实体的度量值,而不需要
要聚集长期 事务历史。接下来将以淘宝交易结束后的评价数据、卖家的累积支 金额、买卖家星级等事实表的设计为例,介绍快照事实表在事件中应用。
一、快照事实表
特性
快照事实表的设计有一些区别于事务事实白的设计性质。事务事实表的粒度能以多种方式表达,单快照事实表的粒度通常以维度的形式表明;事务事实表是稀疏的,但快照事实表是稠密的;事务事实表中的事实是完全可加的,但快照模型将至少包含一个用来展示半可加性质的事实。
1、用快照采集状态
快照事实表以预定的间隔采样状态度量。这种间隔联合一个或多个维度,将被用来定义快照事实表的粒度,每行都将包含记录所涉及状态的事实。
以自然年汇总事实表为例子介绍,比如我们会统计自然年至今的下单金额、支付金额、支付买家数、支付商品件数等状态度量,具体表可以参考下面
2、快照粒度
但快照事实表的粒度通常总是被多维声明,可以简单地理解为快照需要采样的周期以及什么将被采样。
例如交易卖家快照事实表中,粒度可以被理解为每天针对卖家历史截至当日的一些事实度量做快照。例如有每日汇总事实表,每周、每月等时间粒度(具体结合业务做相应粒度快照)
3、密度与稀疏性
事务事实表是稀疏的,只有当天发生的业务过程,,事实表才会记录该业务过程的事实。而快照事实表是稠密的,无论当天是否有业务过程发生,都会记录 行,比如针对卖家的历史至今的下单和支付金额,无论当天卖家是否有下单支付事实,都会给该卖家记录一行。
4、半可加性
在快照事实表中收集到的状态度量都是半可加的。事实不能根据时间维度获得有意义的汇总结果。交易事务事实表,比如可以对 个周期内的下单金额或者支付金额进行汇总,得到下单支付总额,但快照事实表在每个采样周期内是不能对状态度量进行汇总的。
例子
1、单维度的每天快照事实表
(1)、确认粒度
比如淘宝卖家历史至今汇总事实表、淘宝商品自然月至今汇总事实 ,不同的采样粒度确定了不同的快照事实表。
(2)、确定状态度量
确定好粒度以后,就要针对这个粒度确定需要采样的状态度量。比如淘宝卖家历史至今汇总事实表,包含了历史截至当日 的下单金额、历史截 当日的支付金额等度量
商品历史至今快照事实表,确定了商品维度和商品状态度量
2、混合维度的每天快照事实表
混合维度相对于单维度,只是在每天的采样周期上针对多个维度进行采样。比比如淘宝买卖家历史至今快照事实 ,采样周期依然是每天维度是卖家加买家,反映的是不同 家对于不同 卖家的下 支付金额
3、以上两类快照事实表都可以从事务事实表进行汇总产 出,这是周期快照事实表常见的 种产出模式。除此之外,还有种产出模式,直接使用操作型系统的数据作为周期快照事实表的数据源进行加工。
3、全量快照事实表
这类事实表的特性与前面所述的快照事实表有些差异,但依然属于周期快照事实表范畴。对于全量快照事实表,这里再增加 步,即冗余维度。此如好中评快照事实表,冗余了子订单维度、商品维度、评论者维度、被评论维度以及杂项维度 ,包括评论内容、是否匿名等信息
注意事项:
1、事务与快照成对设计
对于事务事实表和快照事实表往往都是成对设计的 ,互相补充,以满足更 的下游统计分析需求,特别是在事务事实表的基础上可以加工快照事实表,既丰富了星形模型,又降低了下游分析的成本。
2、附加事实
快照事实表在确定状态度量时, 般都是保存采样周期结束时的状态度量。但是也有分析需求需要关注上 个采样周期结束时的状态度,而又不愿意多次使用快照事实表,因此一般在设计周期快照事实表时会附加 些上 个采样周期的状态度量。
3、周期到日期度量
在卖家历史至今快照事实表时,指定了统计周期是卖家历史至今的一些状态度量,然而在实际应用中,也有需要关注自然年至今、季度至今等一些状态度量,因此在确定周期快照事实表的度量时,也要考虑类似的度量值,以满足更多的统计分析需求。数据仓库在设计周期快照事实表时,就针对多种周期到日期的度量设计了不同的快照事实表。
二、累积快照事实表
了淘宝交易下单/支付/确认收货事务事实表,用于统计下单/支付/确认收货的子订单数、 GMV 等。但仍然有很多需求,此事务事实表很难满足,比如统计买家下单到支付的时长、买家支付到卖家发货的 时长、买家从下单到确认收货的时长等。如果使用事务事实表进行统计,则逻辑复杂且性能很差。对于类似于研究事件之间时间间隔的需求,采用累积快照事实表可以很好地解决。