dfo*_*r99 10 sql data-warehouse dimensions
我正在设计一个数据仓库,我有一个棘手的时间问题.我需要的谷物是每小时(计算每小时事件的总计数),我还必须适应24小时内不方便拟合的换档模式(实际上'蓝色'换档可能不会覆盖相同几天的时间).
考虑到这一点,我正在考虑三种方法之一
我倾向于方法3,因为它允许在连接中单独引用小日历维度,但我会感激任何想法.
是的,制造业转变是棘手的,并且会随着时间的推移而发生变化,通常是一天前的一个班次,等
请记住,这里有两个日历.一个是标准日历,另一个是生产日历 - 班次属于生产日历.通常,生产日历中的一天可能比24小时更多(或更少).
例如:
部分产生于2011-02-07 23:45周一可能看起来像
TimeOfProduction = '2011-02-07 23:45'
DateKey = 20110207
TimeKey = 2345
ProductionDateKey = 20110208 (the first shift of the next day started at 22:00)
ProductionTimeKey = 145 (1 hour and 45 minutes of the current production date)
ShiftKey = 1
ShiftTimeKey = 145 (1 hour and 45 minutes of the current shift)
Run Code Online (Sandbox Code Playgroud)
所以,我的建议是:
Date Dimension(每个日期一行)Time Dimension(24小时每分钟一排= 1440行+见下面的注释)Shift Dimension - 类型2维度 rw_ValidFrom, (rw_ValidTo) , rw_IsCurrentDateKey成ProductionDateKeyTimeKey一个ProductionTimeKey和一个ShiftTimeKey.TimeOfProduction (datetime)在事实表中.ProductionDateKey, ProductionTimeKey, ShiftKey, ShiftTimeKey到factPart表的每一行.请注意,Time Dimension如果生产日可能持续超过24小时,则可能需要添加额外的行.通常情况下,如果使用当地时间并且有夏令时跳跃.
所以,明星可能看起来像这样

我的 \xc2\xa30.02 的价值:
\n\n假设考虑转变不会产生其他问题(@Andriy M 的问题):
\n\n我倾向于对选项 2 打折扣,除非您可以通过采用它看到特定的好处(性能、一类查询的简化等)。您没有描述任何此类好处,因此您似乎是为了本身而增加了复杂性。
\n\n我个人更喜欢选项 1——概念上最简单、最直接并且 (IMO) 最适合数据仓库方法。
\n\n选项 3 具有您提到的优点,但我一直怀疑它涵盖了两种选择:日历维度正如您所描述的那样,但时间维度的选择是 175k 行或 24。我目前无法提供对于这两种选择中的任何一种的争论,只是一种直觉,认为有两种这样的选择。如果转变问题与此相关,它可能会影响这些替代方案之间的选择(如果它们是真正的替代方案)。
\n\n如果您希望进一步采用选项 2,选项 3 中列出的替代方案也适用。
\n| 归档时间: |
|
| 查看次数: |
3957 次 |
| 最近记录: |