专注于中国的商业智能

导航

KDT#2 事实表中的多个时间字段

在数据仓库的设计中,我们会看到有些事实表中有很多时间字段。这些时间字段和维度表应该怎样关联是我们要考虑的事情。

通常我们有三种粒度的事实表,分别是事务粒度事实表(Transaction Grain),周期快照粒度事实表(Periodic Snapshot Grain)和累计快照粒度事实表(Accumulating Snapshot Grain)。这种多个时间字段的事实表多为累计快照事实表。例如一个事实表中可能有如下日期字段:

订货日期

预定交货日期

实际发货日期

实际交货日期

在进行维度建模时,我们不可能为每一个日期维度建立一个维度表。这时,我们一般会为每一个日期字段建立一个角色模仿维度(Role-playing),每一个日期字段外键关联到这些角色模仿维度表上。通常的实现方式是,在同一个日期维度表上建立多个视图来作为角色模仿维度。这样,多个角色模仿维度的来源是一致的,也是一致性维度的一种情况。

目前来说,通常的数据访问工具也都支持这种角色模仿维度的生成,如果用这样的数据访问工具的话,就可以不用建立相应的视图了。

另一个需要注意的事情是日期表要建立代理键。代理键可以处理 “不知道”或“还未发生”的日期值。

如果这些日期字段中细到分钟或者秒,就需要我们将日期维度和时间维度分开。这个问题以后再讨论。

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