专注于中国的商业智能

导航

KDT#43 维度建模中处理空值的策略

关系数据库中都支持空值(NULL)来表示数据不存在。但是在数据仓库中,一般不建议继续保留这些空值。下面介绍维度建模中的三种处理空值的策略。

1.事实表的外键为空值。

这种情况出现的原因主要有两个,一个是在数据抽取时外键值还不知道,另一个是在源系统中外键值丢失。这时,引用完整性遭到了破坏。第一种情况通常出现在累计快照事实表中,因为有些事件还没有发生,所以对应的时间不存在。这时,保留空值作为外键是不可取的,我们应该在日期维度中建立一条记录,标识为”还未发生“。然后将未发生的日期关联到该记录上。同样,对于第二种情况,我们应该在相应的维度表中建立记录,标识为”已丢失“。

2.事实表中的事实为空值。

这种情况下,空值通常有两种含义,一种是值不存在,另一种是系统没有记录该值。不论是哪一种,我们都应该将空值保留下来,大多数的数据库系统都能对空值很好的处理聚集函数,如SUMMAXMINCOUNTAVG。这时,将空值替换成零反而有可能使聚集函数不准。

3.维度表中的属性为空值。

维度表中的属性为空值可能是因为属性没有捕获到,或者属性不知道。这时,我们不应该保留空值,而应该将空值替换为”不知道“或者”未提供“之类。

总的来说,在数据仓库中空值容易引起误解,我们要尽可能的将空值替换成实际的值。

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