Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据仓库-营业时间_Sql_Data Warehouse - Fatal编程技术网

Sql 数据仓库-营业时间

Sql 数据仓库-营业时间,sql,data-warehouse,Sql,Data Warehouse,我正在开发一个数据仓库,最终需要我根据工作时间创建报告。目前,我的时间维度是以小时为单位的。我想知道我是否应该修改我的时间维度以包含“营业时间”的位字段,还是应该在分析端为其创建某种计算度量?任何示例都会非常出色?我不确定这是否有用,但我会使用UCT存储所有时间,然后使用开始和结束时间来指定营业时间。设置完成后,如果(SpecificHour>=BusinessStartingHour)和(SpecificHour使用Microsoft PerformancePoint 2007,您可以使用不同

我正在开发一个数据仓库,最终需要我根据工作时间创建报告。目前,我的时间维度是以小时为单位的。我想知道我是否应该修改我的时间维度以包含“营业时间”的位字段,还是应该在分析端为其创建某种计算度量?任何示例都会非常出色?

我不确定这是否有用,但我会使用UCT存储所有时间,然后使用开始和结束时间来指定营业时间。设置完成后,如果(SpecificHour>=BusinessStartingHour)和(SpecificHour使用Microsoft PerformancePoint 2007,您可以使用不同的选项进行播放和测试,这将是一个简单的
。您可以修改维度,并将结果输出到图表、数据透视表、其他报告工具等中

是否“营业时间”会随着时间的推移而变化?我想我是在问,每一行是否需要与营业时间标志相关联,或者仅仅让报表本身(或一些引用)表决定交易是否在营业时间内发生就够了


如果其他条件相同,我可能会让报告为您做这件事,而不是标记行,但是如果营业时间随时间变化而变化,您必须标记行以确保您的历史数据保持正确。

您的所有销售数据都在同一时区吗?例如,您是跟踪不同时区的门店的销售情况,还是跟踪最终用途不同时区的营业时间?如果是这样,您可能希望在sales fact表中为“business hour”创建该位字段,因为对于不同时区的用户和门店来说,很难实时计算该位字段


另外,当销售导入到数据仓库中时,您只需计算一次,因为这些数据不太可能经常更改。这不像您要说的那样,“这项销售过去是在营业时间进行的,但现在不再是了。”

营业时间是业务规则,因此将来可能会发生变化

将工作时间表示为基准时间和持续时间,例如StartTime 0900,持续时间9.5小时,这样您可以轻松更改间隔,根据不同的工作时间执行假设情景,并且工作时间可以跨越日期行,而不会使查询复杂化

当然,所有日期时间都应该是GMT(UTC),而不是本地时间,以避免夏令时的复杂性


编辑:我想我误解了这个问题,你的数据已经精确到小时了……不,我想我的答案是正确的,但是增加了工作时间间隔的有效开始和结束日期。这将允许粒度在未来发生变化,同时仍然保留历史

我认为这是一个判断电话……一个取决于性能测试、系统使用情况等。就个人而言,我可能会创建一个索引字段来保存一个标志,以便处理逻辑,以确定什么是和什么不是提前营业时间(即加载数据的时间)。如果操作正确(再次,取决于具体使用情况)我认为您也可以获得性能提升。

使用一点(甚至另一个专栏)指定一个小时在存储时是否为营业时间。否则,当您更改营业时间时,您将无法复制历史报告。

谢谢您的否决票,我不想成为smarta$$,但您应该在采取此类操作之前检查UTC的定义。UTC比较实际上会考虑到考虑日期、闰年、时区等因素。在伪代码中,如果BusinessStartingHour类似于“8”(上午8点),则存在午夜问题。如果BusinessStartingHour类似于“1232402400”(美国东部时间今天上午4点),您的评论似乎暗示了这一点,则您必须计算不同的时间戳[每天两次]每天。这就是我的意思。但是,我认为计算会比为数据库中存储的每个时间戳添加一点(或一个全新的列)更有效率。然而,我可能错了。我想我只是一个UTC迷;)+1是一个有用的答案,即使不是完全正确的@[Spar]:请注意,向下投票是针对没有帮助的答案,而不是不完整的答案;-)@[HMCClungii]:如果你使用StartHour和Duration,那么午夜问题就消失了。@@[Spar]:但是对你为什么投了否决票进行评论的荣誉,这是一件非常棒的事情!