数据仓库 - 营业时间

时间:2009-01-19 21:49:09

标签: sql data-warehouse

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

7 个答案:

答案 0 :(得分:7)

使用一位(甚至另一列)来指定小时是否是存储时的营业时间。否则,当您更改营业时间时,您将无法重现历史报告。

答案 1 :(得分:1)

您的所有销售数据都在同一时区吗?例如,您是否跟踪不同时区的商店或不同时区的最终用户的销售额?如果是这样,您可能希望在销售事实表中为“营业时间”创建该位字段,因为在不同时区内为用户和商店动态计算它将非常困难。

另外,您只想计算一次 - 当销售被导入数据仓库时 - 因为这些数据不太可能经常变化。这不像你会说,“这次拍卖曾经是在营业时间,但不再是。”

答案 2 :(得分:1)

营业时间是业务规则,因此它们可能会在未来发生变化

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

当然,所有日期时间应为GMT(UTC),从不当地时间,以避免夏令时复杂性

编辑:我认为我误解了这个问题,你的数据已经过时了......不,我认为我的答案是有效的,但是增加了营业时间间隔的有效开始和结束日期。这将允许粒度在未来保持历史的同时改变

答案 3 :(得分:0)

我不确定这是否有帮助,但我会使用UCT一直存储,然后有一个开始和结束时间来指定营业时间。设置完成后,这将是一个简单的If (SpecificHour >= BusinessStartingHour) And (SpecificHour <= BusinessEndingHour) Then ...操作。

答案 4 :(得分:0)

如果您使用Microsoft PerformancePoint 2007,则可以使用不同的选项进行播放和测试。您可以修改尺寸并在图表,数据透视表,其他报告工具等中输出结果。

http://office.microsoft.com/en-us/performancepoint/FX101680481033.aspx

答案 5 :(得分:0)

“营业时间”可能会随着时间的推移而改变吗?我想我是在问每一行是否需要绑定到营业时间标志,或者是否只是让报告本身(或某些参考)表决定该交易是否在营业时间内发生就足够了。

其他一切都相同,我可能有报告为你做,而不是标记行,但如果工作时间随着时间的推移而变化,你必须标记行以确保你的历史数据保持正确。

答案 6 :(得分:0)

这是一个判断调用我认为......一个依赖于性能测试,系统使用等等。我个人可能会创建一个索引字段来保存一个标志,以便处理逻辑以确定什么是并且不是预先营业时间(即加载数据时)。如果正确完成(并且再次,取决于具体用法),我认为您也可以获得性能提升。