事务事实表用于跟踪定义业务过程的个体行为
设计案例
场景:为交易事务设计事实表
1)业务分析:交易事务包括下单、支付、发货、完结四个业务过程
2)确定粒度:同一个订单中可以包含多个在商品,每个商品对应一个子订单。在上述四个业务过程中下单、支付、完结选择子订单作为粒度,而发货业务过程包含物流信息,以父订单为粒度
3)确定维度:卖家、买家、商品、商品类目、发货地区、收货地区、父订单一级杂项维度
4)确定事实:每个业务过程有自己的事实,如下单过程的下单金额、下单数量;支付过程的支付金额、积分金额等
5)冗余维度:为了提升效率,把常用的维度荣誉到事实表
单事务事实表
一个业务过程一张事实表,方便对每个业务做独立分析
多事务事实表
将不同业务过程放在同一个事实表中,又可以分为不同业务过程使用不同事实字段和不同业务过程使用相同事实字段两种
1)不同业务过程使用不同事实字段,一般用于业务相似,粒度相同但是业务过程的度量差异大的场景。有两个典型的问题:
① 在数据中遇到不是当前业务过程的度量,采用零值处理
② 表中存在多个业务,如何标记?给每一个数据加一个属性标识是否当日业务
2)不同业务过程使用相同事实字段,用一个标签字段标识是那种业务(如商品的收藏/删除)。一般用于业务相似,粒度相同同时业务过程的度量差异不大的场景。但是有一个问题要注意,因为用同一个字段标识不同业务的度量,所以数据一个周期内会有多条记录
两种事实表对比
另外,如果一个业务过程的事实量巨大,不宜使用多事务事实表,会造成大量零值