02.事实表设计
事实表
事实表产生于业务过程,存储了业务活动或事件提炼出来的性能度量。从最低的粒度级别来看,事实表的一个行对应一个度量事件。
事实表根据粒度的角色划分,可分为 事务事实表、周期快照事实表、累计快照事实表。
需要注意的是,同一张表里的粒度必须相同,以上三种表不能混用。
- 事务事实表
用于承载事务数据,通常粒度比较低。它是面向事务的,其粒度是每一行对应一个事务,它是最细粒度的事实表。例如商品交易事实表、用户充值事实表。
- 周期快照事实表
按照一定的时间周期间隔来捕捉业务活动的执行情况。两个关键字:周期
、快照
,简单说就是粒度比较粗事务事实表的定期快照。一旦装入事实表就不会再更新,它是事务事实表的补充。用来记录有规律、固定时间间隔的业务累计数据,通常粒度比较高。例如账户的月平均余额事实表、年商品销售额。
- 累计快照事实表
累积快照事实表和周期快照事实表有些相似之处,它们存储的都是事务数据的快照信息。但是它们之间也有着很大的不同,周期快照事实表记录的确定的周期的数据,而累积快照事实表记录的不确定的周期的数据。
累积快照事实表记录的是完全覆盖一个事务或产品的生命周期的时间跨度,它通常具有多个日期字段,用来记录整个生命周期中的关键时间点,一个生命周期对应一行。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,所以必须使用代理关键字来处理未定义的日期,而且这类事实表在数据加载完后,是可以对它进行更新的,来补充随后知道的日期信息。