并行日期的日期维度

时间:2015-08-21 21:02:00

标签: sql-server database database-design database-schema universe

我有一个架构来显示客户和日期的销售额。要求是能够显示每个客户在上一季度的同一日期的销售额(2015年8月21日至2015年5月21日)。我使用DATEADD(qq,-1,FullDate)在我的日期维度中添加了一个ParallelQuarterDate列。

为了能够满足要求,我创建了一个事实表的别名,该别名连接在Date维度的ParallelQuarterDate字段上,而常规事实表连接在Date维度中的普通DateKey字段上。两个事实表都可以加入客户维度,也可以由客户报告。

除了我尝试按月汇总销售额并且因为每个月的天数不同时,这一切都完美无缺。所以在日期维度上,相对于2015年12月31日,有一个2015年9月30日的ParallelQuarterDate和2015年12月30日的2015年9月30日,这是重复计算。显然,你会得到相反的效果,例如2015年6月30日的日期,其间的ParallelQuarterDate为30/03/2015,绕过March也有第31天的事实。

enter image description here

按月实现正确汇总的最佳方法是什么?我正在考虑创建具有月份粒度的日期表,然后将别名事实表连接到日期维度和客户维度。

请让我知道你的想法。谢谢!

1 个答案:

答案 0 :(得分:1)

这看起来这些值仅在您汇总到月份级别时才有效,因此我将针对月份N运行聚合查询,然后针对月份N-3运行另一个聚合查询。连续几天(或几个月,甚至几年)的加入时间无效。