处理星形模式中快照事实表的粒度更改



问题

如何处理快照事实表的谷物变化(从每周测量到每天测量)。

背景信息

对于星形模式设计,我想将调查结果作为事实(例如,在2015年第2周,80%的受访者回答"是",在第3周,76%的受访者回答等)这项调查每周进行一次,我只能看到调查结果(本周有%的人表示同意),而不能看到个人的回答。

根据(我对)Christopher Adamson的"恒星模式:完整参考",我认为我应该使用快照事实表来进行此类测量。

这个事实的日期维度应该在周的水平上,并且是其他恒星中每天发生的其他事实的更细粒度的日期维度的一致汇总。

麻烦来了

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

  • 将周维度更改为每日维度,并将旧事实假装为发生在一周的最后一天
  • 将周维度更改为每日维度,并为每周一个添加7个事实
  • 用日常的事实和维度创造一颗新星,并将旧的视为一个集合体

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

我不相信这是一个快照。每个调查回复都代表一笔"交易"。

使用适当的日期维度,您可以计算按周汇总的"是/否"百分比。

此外,这将使您能够显示"周日晚上发布的调查得到更多回复"或"周五回复的人更有可能回答‘是’"等结果。(人为的例子)


经过澄清,这看起来确实像是一个周期性的快照。银行账户余额的例子经常被用来描述类似的情况。

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

我认为这是你问题的关键。知道你的谷物可能会从每周变为每天,所以每天都要吃。这确实意味着你会在一周中的每一天重复每周的数值,但这是你对事实的真实了解;周三你只知道它的价值和周一一样。

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

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

最新更新