如何设计一张事务事实表?

根据书籍:大数据之路,设计一张事务事实表的步骤分以下几步:

 

1.选择业务过程

 

在设计事实表的时候,首先得知道这张事实表要记录什么事实,也就是说,对应的业务过程是什么,是关于下单这个业务过程,还是支付还是交互之类的。

2.确定粒度

业务过程选定以后,就要针对每个业务过程确定一个粒度,即确定事务事实表每一行所表达的细节层次。(以“组织结构”为例,比如一个层级结构式:总公司,分公司,部门,科室。这就是不同的粒度。)

如果选择的业务过程是下单,并且我想观察每个订单的详细情况,那么粒度可以选择为订单粒度,在下单业务过程中,最细的粒度应该就是订单粒度。

对于事务表,一般都是从最细粒度构建。同时,上卷汇总粒度对性能调整来说非常重要。不同的事实表粒度,需要建立不同的事实表,比如订单粒度和店铺粒度的数据,不要在一张事实表中,在同一事实表中不要混用多种不同的粒度。

3.确定维度

维度信息一般是时间,地区等等维度,具体还要看对应的使用场景,当度量和维度进行关联的时候,一条事实表的纪录只能和对应的维度进行关联,应该是1:1的关系。

4.确定事实

事实,也叫做度量或者指标,作为事实表的核心,事实表应该包含与其描述过程有关的所有事实。不同的业务过程拥有不同的事实,一个业务过程中,可能也有不同的度量,比如在下单业务过程中, 需要包含下单金额、下单数量、下单分摊金额等等;

5.冗余维度

在确定维度时,我们确定了一些维度,但是Kimball维度建模理论建议在事实表中只保存这些维表的外键,一般我们会把一些维度退化、冗余到事实表中,方便在事实表中进行统计,也为下游使用这张事实表的时候不用再去关联别的维度表,是一种以存储空间换效率的做法。

 

参考文章:

https://segmentfault.com/a/1190000009014636

你可能感兴趣的:(数据建模)