【发布时间】:2017-02-21 13:23:24
【问题描述】:
我即将开始使用 SQl Server 2012 为数据仓库项目创建维度日期表。
在第一个用户 cmets 上是......
'不同的客户会有不同的一周的第一天,所以并不总是星期一'。
我将如何在单个暗表中容纳可能 7 个不同的工作日开始,或者我应该简单地在事实表中以每个客户为基础动态计算它而不使用暗日期表?
【问题讨论】:
标签: datetime sql-server-2012 data-warehouse
我即将开始使用 SQl Server 2012 为数据仓库项目创建维度日期表。
在第一个用户 cmets 上是......
'不同的客户会有不同的一周的第一天,所以并不总是星期一'。
我将如何在单个暗表中容纳可能 7 个不同的工作日开始,或者我应该简单地在事实表中以每个客户为基础动态计算它而不使用暗日期表?
【问题讨论】:
标签: datetime sql-server-2012 data-warehouse
选项 1. 使用内置日期匹配函数即时计算。 SQL Server 默认将星期日作为一周的第一天。
选项 2。在表格中为一周中的每一天创建一个额外的列,指示其一周中的天数。例如,TuesdayFirst 列的每个星期二为 1,每个星期三为 2。
选项 3。(最佳)在您的日期维度上创建一个视图,用于计算每天的附加列。选择中不需要的任何列都将被忽略且不计算。这提供了持久列和一致的计算方法的好处,但与预先计算相比确实有一些处理开销。
如果您选择选项 3,请不要使用 CASE 语句来计算它。您必须严格使用日期数学,以使其在聚合时表现得体。
【讨论】: