专注于中国的商业智能

导航

KDT#50 再谈非事实型事实表

我们用非事实型事实表来记录维度之间的多对多关系,但是关系上没有数字或者文本的事实。非事实型事实表一般用来记录事件或者范围信息。常见的例子如:标识产品的促销范围;记录学生出席或者注册事件等。

在本TIP中我们用非事实型事实表来补充缓慢变化维的处理策略。

对于一个大型的B2C企业来说,会有上千万的客户。对于这种大型的客户表,需要跟踪客户的变化情况,我们可以采用TYPE 2的缓慢变化维策略来进行应对。例如,一个大的客户表,我们尽量减小TYPE 2生成的记录数,建立了四个微型维度,分别是客户信用属性、客户参数、市场倾向和客户详细地址。这样在交易粒度事实表中我们会保留客户相关信息的五个外键,这些外键关联到客户不同的信息。

同时,我们还应该支持客户的整体信息的访问。为了能方便访问客户的整体信息,我们可以建立另一个周期快照事实表,每天加载客户维度和其相关联的微型维度的关系。但是这样就需要每天保存上千万记录的快照,不是一个好的选择。

这时,我们可以考虑建立非事实型事实表来解决这个问题。我们可以建立一个事实表,其中只有客户维度和其对应微型维度的外键,当客户有TYPE 2变化时或者产生新的微型维度记录时,我们可以在这个事实表中插入一条记录。在这个事实表中还可以加入生效日期和失效日期,可以加一列用来标识是当前客户信息记录,可以加变化原因列。

posted on 2010-08-05 13:49  李梦蛟  阅读(522)  评论(0编辑  收藏  举报