Datetime 具有多个星期第一天的维度日期表

Datetime 具有多个星期第一天的维度日期表,datetime,sql-server-2012,data-warehouse,Datetime,Sql Server 2012,Data Warehouse,我即将开始使用SQl Server 2012为数据仓库项目创建维度日期表 在第一条用户评论中,有一条是 “不同的客户会有不同的第一天,所以不一定是星期一” 我该如何在一个dim表中容纳可能7个不同的周初日,还是应该在事实表中按每位客户动态计算,而不使用dim日期表?选项1。使用内置的日期匹配函数动态计算。SQL Server默认将星期日作为一周的第一天 备选案文2。在表中为一周中的每一天创建一个附加列,指示其一周中的天数。例如,列TuesdayFirst每周二有一个1,每周三有一个2 备选案文3

我即将开始使用SQl Server 2012为数据仓库项目创建维度日期表

在第一条用户评论中,有一条是

“不同的客户会有不同的第一天,所以不一定是星期一”


我该如何在一个dim表中容纳可能7个不同的周初日,还是应该在事实表中按每位客户动态计算,而不使用dim日期表?

选项1。使用内置的日期匹配函数动态计算。SQL Server默认将星期日作为一周的第一天

备选案文2。在表中为一周中的每一天创建一个附加列,指示其一周中的天数。例如,列TuesdayFirst每周二有一个1,每周三有一个2

备选案文3。(最好)在日期维度上创建一个视图,用于计算每天的附加列。选择中不需要的任何列都将被忽略且不会计算。这提供了持久列和一致计算方法的优点,但与预计算相比,确实有一些处理开销


如果选择选项3,请不要使用CASE语句来计算它。您必须严格使用日期数学,以便它在聚合时正常运行。

感谢您的回复。我喜欢选项3的想法。所以为了把这件事做好。。。该视图将包括所有可能的开工日,还是仅包括“按需”开工日?原始Dim date表中受此不同开始日期影响的所有属性如何?i、 e.如果是“星期三”,则[StartOfWeekDate]=星期三日期,[EndOfWeekDate]=星期二日期,[DayofWeek]以及可能的[DayNumber]。星期三现在是“1”还是停留作为默认的“2”?当然,只会有几个受影响的属性,因此不确定视图是否会包含上述所有属性x 7?如果您需要为每个客户提供所有基于周的列,那么您需要为每个属性提供七个。如果您这样做并且正在使用SSA,我强烈建议您使用多维数据集日期维度中的文件夹,以便更好地为最终用户组织它。如果星期三是一周的第一天,我希望它是一周的第一天。