Data warehouse 处理星型架构中快照事实表的粒度更改 问题

Data warehouse 处理星型架构中快照事实表的粒度更改 问题,data-warehouse,star-schema,Data Warehouse,Star Schema,如何处理快照事实表的粒度变化(从每周测量到每日测量) 背景信息 对于星型模式设计,我希望将调查结果作为事实(例如,在2015年第2周,80%的受访者回答“是”,在第3周,76%的受访者回答“是”,等等) 这项调查每周进行一次,我只能查看调查结果(本周回答“是”的人数百分比),而不能查看个人回答 根据克里斯托弗·亚当森(我对他的解释)的“星型模式:完整参考”,我认为我应该使用快照事实表来进行此类测量 该事实的日期维度应该是周级别的,并且是其他星号中每日发生的其他事实的更细粒度日期维度的一致汇总 麻

如何处理快照事实表的粒度变化(从每周测量到每日测量)

背景信息 对于星型模式设计,我希望将调查结果作为事实(例如,在2015年第2周,80%的受访者回答“是”,在第3周,76%的受访者回答“是”,等等) 这项调查每周进行一次,我只能查看调查结果(本周回答“是”的人数百分比),而不能查看个人回答

根据克里斯托弗·亚当森(我对他的解释)的“星型模式:完整参考”,我认为我应该使用快照事实表来进行此类测量

该事实的日期维度应该是周级别的,并且是其他星号中每日发生的其他事实的更细粒度日期维度的一致汇总

麻烦来了 现在有人决定每天而不是每周进行这些调查。处理这个问题的最佳方法是什么?我目前正在考虑的一些选择:

  • 将week维度更改为daily维度,并假装旧事实发生在一周的最后一天
  • 将week维度更改为daily维度,并为每周维度添加7个事实
  • 创造一个新的明星,每天的事实和维度,并将旧的作为一个集合

如果您有任何意见,我将不胜感激。如果我的逻辑不正确,或者我的问题不清楚,请告诉我:)

我不相信这是快照。每个调查响应代表一个“事务”

通过适当的日期维度,您可以计算是/否百分比,按周汇总

此外,这将使您能够显示诸如“周日晚上发布的调查得到更多的答复”或“周五做出答复的人更有可能回答“是”之类的结果。(人为的例子)


在澄清之后,这看起来确实像一个定期快照。银行账户余额的例子通常用于描述类似的场景

定期快照的一个关键特性是每个维度的每个组合都应该存在。如果你的谷物是每月一次的,那么每个月你都要记录事实,即使它与前一个月没有变化

我认为这是解决你问题的关键。要知道你的粮食可能会从每周变为每天,所以要使你的粮食每天都有变化。这确实意味着你将在一周中的每一天重复每周价值,但这是你对事实认识的真实体现;周三你只知道它的价值和周一一样

如果您正确地设计了ETL,那么在每日更新开始时就不需要进行任何更改


你的第二个选择是我在你的位置上选择的。

我的期望是,调查会在几天内进行,比如一个月,但每次答复都会在该范围内的特定日期进行。您的事务就是响应。我是否误解了这种情况?我想编辑我的评论,但我无法:)在我的情况下,我只能访问调查的总结果(本周受访者人数+%表示同意)。因此,我无法判断个人的反应是什么时候发生的。还有一个问题:)时间的概念重要吗?如果使用日期不是维度的快照,您能从这些事实中获得输出吗?这个问题的答案将帮助我选择两个备选方案中的哪一个进行讨论。是的,这很重要,因为调查结果与同期的网站访问量进行了比较。我感谢你的帮助,罗恩!你的解决方案是切实可行的,符合我的情况,因此我接受了答案,并将以这种方式实施。说这是事实有点奇怪。。因为什么都没发生,什么都没检查过(如果那天被问到的话,可能会有更少的人说是的),但这符合我的需要。也许我会说颗粒是“已知百分比..为了让它明显不是测量的百分比”,添加了背景信息,以反映我无法获得个人回答,如果我这样做,罗恩·邓恩的评论将是有效的。