ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

维度建模-事实表类型

2021-04-07 16:02:06  阅读:211  来源: 互联网

标签:事务 快照 周期 记录 建模 日期 维度 事实


维度建模数仓领域中的事实表大致分以下三种:事务事实表,周期快照事实表,累计事实表

什么是稀疏表,什么是稠密表?

稀疏表:当天只有发生了操作才会有记录

稠密表:当天没有操作也会有记录,便于下游使用

 

 

 

1.事务事实表

事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务记录一条记录。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。由于事实表具有稀疏性质 ,因此只有当天数据才会进入 当天的事实表中,相当于每个分区里面都是每天的数据,不包含之前的数据。 

 

事务事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。用户可以通过事务事实表对事务行为进行特别详细的分析。

 

为什么事务事实表具有稀疏性质?

事实表一般围绕着度量来建立,当度量产生的时候,事实记录就生成了。度量可以是销售数量、交易流水值、月末节余等数值。如果同时生成多个度量值的话,我们可以在一个事实表中建立多个事实。当我们的事实表中的事实比较多时,有可能多个事实不同时发生,如果同时生成的几率很小,我们称之为稀疏事实表(Sparse Facts)。

 

2.周期快照事实表

周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。它统计的是间隔周期内的度量统计,如历史至今、自然年至今、季度至今等等

 

周期快照表没有粒度的概念,取而代之的是周期+状态度量的组合,如历史至今的订单总数,其中历史至今是一个周期,订单总数是度量。

 

周期快照事实表的粒度是每个时间段一条记录,通常比事务事实表的粒度要粗,是在事务事实表之上建立的聚集表,比如说时间周期是1周,那么这个周期快照事实表的一条记录就是这一周的对于某个度量的统计值(我理解的)。

 

周期快照事实表的维度个数比事务事实表要少,但是记录的事实要比事务事实表多(为什么记录的事会比事务事实表表多呢?)。事务事实表是稀疏表,周期快照表是稠密表。

 

事务事实表是稀疏的,只有当天发生的业务过程,事实表才会记录该业务过程的事 实, 如下单、支付等;而快照事实表是稠密的,无论当天是否有业务过程发 生,都会记录一行,比如针对卖家的历史至今的下单和支付金额,无论 当天卖家是否有下单支付事实,都会给该卖家记录一行。假如卖家之前下单6笔,昨天没有下单,但是还是会给他在昨天的分区里面纪录它截止目前为止下单6笔的纪录。

 

3.累计快照事实表

累积快照事实表和周期快照事实表有些相似之处,它们存储的都是事务数据的快照信息。但是它们之间也有着很大的不同,周期快照事实表记录的确定的周期的数据,而累积快照事实表记录的不确定的周期的数据。累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。例如订单累计快照事实表会有付款日期,发货日期,收货日期等时间点。

 

事务事实表中一条交易记录会每天有一条数据来记录整个交易过程;而累积快照事实表只会有一条记录,数据会一致更新直到过程结束。

 

累积快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息。

 

周期快照事实表记录的是重复的可预测到的时间间隔的事实,例如帐户月结余事实表,用来记录每个月末的帐户结余信息。一般周期快照的数据会按报表需要的周期进行记录,比较适合周期长一些的情况。

 

而累计快照适用于较短周期,有着明确的开始和结束状态的过程,如一个订单执行的过程,并记录过程中每个步骤的执行时间,使分析人员对执行的过程有整体的把握。周期快照事实表记录上每个步骤的执行时间是逐步建立的,随着执行的过程逐步更新的事实表中。

 

标签:事务,快照,周期,记录,建模,日期,维度,事实
来源: https://www.cnblogs.com/dangjf/p/14628165.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有