明细粒度事实层(DWD)通常分为三种:事务事实表、周期快照事实表和累积快照事实表。

  • 事务事实表用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为原子事实表。
  • 周期快照事实表以具有规律性的、可预见的时间间隔记录事实。
  • 累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。当累积快照事实表随着生命周期不断变化时,记录也会随着过程的变化而被修改。

事实表设计原则

  • 事务事实表,事务事实表的设计原则是,记录单个事务或事件的相关数据。这种表通常包含与某个特定事件相关的详细数据,如一次购买的商品种类、金额、购买时间等。设计事务事实表时,需要明确事件的类型、发生时间、关联的主键等信息。
  • 周期性事实表,周期性事实表的设计原则是,将一段时间内重复发生的事件记录下来。这种表通常包含每天、每周或每月的周期性数据。设计周期性事实表时,需要明确事件的周期性类型、起始时间和结束时间,以及事件发生时的关联信息。
  • 累积快照事实表,累积器事实表的设计原则是,记录一段长时间范围内的累积度量数据。这种表通常包含某个时间点的累计值,如某个月的销售额、某个季度的客户数量等。设计累积器事实表时,需要明确累积的起始时间、结束时间,以及累积计算的规则。

三种事实表的比较

DWD三种事实表建模方法和注意事项_java

通俗理解

  • 事务事实表【一般不用】

也称原子事实表,描述业务过程,跟踪控件或时间上某点的度量事件,保存的是最原子的数据。类比Binlog日志,每一次变更都记录下来,生成一行新的数据。

  • 周期快照事实表【常用】

以一个周期为时间间隔,来记录事实,一般周期可以是每天、每周、每月、每年等;

只看某个业务过程,比如订单签收,数据按订单签收时间来切分,周期可以为每天、每月等。

  • 累积快照事实表【必用】

用来描述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点;当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。

整个生命周期的多个业务过程,比如:创建订单、买家付款、卖家发货、买家收货。粒度是一个订单一行数据,创建订单时间,付款时间,发货时间,收货时间,分别作为一个字段,便于计算不同业务过程的时间间隔。