我有一个日期地图(日期维度),就像所有其他数据仓库一样。
在日期字段中存储日期字段的最明显方法是使用date数据类型。但是,我想在我的日期维度中保留一些记录,其中ID为负值,而日期字段应说明此日期无效的原因。
例如,在我的事实表中,假设我有一个名为order_date_id的字段,它引用了日期维度。但是,对于事实表中的某些记录,我想说order_date不是由系统记录的,因此我们不能使用它。但是我希望它能够进入。
我以为我会在ID为-1的日期维度中创建一个条目,而日期='未记录日期'。但是要使用这种占位符,我必须将日期保持为字符串值。如果我将它存储为字符串值,当我比较两个日期时,它将非常无效。
请告知一个好的做法。
答案 0 :(得分:0)
我认为你混淆了两件事;
这就是我设计日期维度的方式
Date_id =带yyyymmdd的数字 - 智能密钥,这将是主键;这节省了对数据库进行查找以分配id 日期 - 实际日期 年 - 年 月 - 月(yyyy-mmm或yyyy-mmmm) Month_Nbr - 月(yyyy-mm) 季度 - yyyy-Qn(1,2,3,4)
您需要的所有其他属性
如果有销售订单没有分配日期,请将它们分配给19000101并将它们放在您的事实表中...... 如果您逐步获得没有日期的销售订单,那么我会咨询业务并在他们到达系统的当月的第一天进行处理;这将是一个更可接受的解决方案。