数字属性的维度表中为空

时间:2013-04-16 11:23:00

标签: database-design data-warehouse star-schema

处理维度表中缺失值的最佳方法是什么?

对于文本列,很容易编写“NA:Missing”,但对于保留特定值非常重要的数字列应该怎么做。注意:我不想要使用带状值的解决方案(例如,“0-50”,“50-100”,“NA:Missing”的文本列)。

例如,客户维度可能有一个生育年份。如何处理失踪的出生年份?留空?添加任意数字作为占位符,例如1900?

有时,可能很难找到占位符编号。例如,如果sales-to-date是非负数,但可以为零,我不希望将“0”作为null的占位符。我可以使用负值,例如“-1”,但这会破坏使用sums的查询。

1 个答案:

答案 0 :(得分:1)

在事实表中,您永远不会对外键使用空值,但 应该在适当的时候使用空值。汇总时,空值将给出准确的结果,而默认值则不会。

在维度表中,出于同样的原因,属性也可以在适当的时候为空。虽然维度值的聚合不太常见,但确实会发生,所以当它发生时它应该正确

如果维度中需要空值,则维度应该有一行用于此目的。例如,日期维度可能包含3或4个特殊行 - no valueunknownpastfuture是合理的特殊值行,具体取决于您的需求。

通过这种方式,您将在BI层中省去很多痛苦和痛苦。