【问题标题】:Handling change of grain for a snapshot fact table in a star-schema处理星型模式中快照事实表的粒度变化
【发布时间】:2015-07-07 19:32:24
【问题描述】:

问题

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

背景资料

对于星型模式设计,我想将调查结果作为事实纳入(例如,在 2015 年第 2 周,80% 的受访者回答“是”,在第 3 周,76% 等) 该调查每周进行一次,我只能查看调查结果(本周回答“是”的人的百分比),而不是个人回复。

基于(我对)Christopher Adamson 的“星型模式:完整参考”的解释,我认为我应该使用快照事实表来进行此类测量。

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

麻烦来了

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

  • 将周维度更改为每日维度,并伪造旧事实,就好像它们发生在一周的最后一天一样。
  • 将周维度更改为每日维度,并为每个每周维度添加 7 个事实。
  • 用日常事实和维度创建新星,并将旧星视为聚合。

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

【问题讨论】:

  • 添加了背景信息以反映我无权访问个人回复,因为如果我这样做了,Ron Dunn 的评论将是有效的。

标签: data-warehouse star-schema


【解决方案1】:

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

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

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


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

定期快照的一个关键特性是每个维度的每个组合都应该存在。如果你的粮食是按月计算的,那么每个月你都会记录这个事实,即使它与上个月没有变化。

我认为这是解决您问题的关键。知道您的谷物可能会每周变化到每天,因此每天制作谷物。这确实意味着您将在一周中的每一天重复每周值,但这是您对事实了解的真实表示;周三你才知道它的值和周一一样。

如果您的 ETL 设计正确,则无需在每日更新开始时进行任何更改。

你的第二个选项是我会选择的那个。

【讨论】:

  • 我的预期是调查会在数天(例如一个月)内进行,但每个回复都发生在该范围内的特定日期。您的交易就是响应。我误解了场景吗?
  • 想要编辑我的评论,但我不能:) 在我的情况下,我只能访问调查的总结果(本周受访者人数 + 同意的百分比)。所以我无法知道个人反应是什么时候发生的。
  • 还有一个问题 :) 时间的概念重要吗?如果您使用 DATE 不是维度的快照,您能否从这些事实中获得输出?这个问题的答案将帮助我选择两个备选方案中的哪一个来讨论。
  • 是的,这很重要,因为调查结果与同一时期的网站访问量进行了比较。感谢罗恩的帮助!
  • 您的解决方案很实用,适合我的情况,所以我接受了答案并将以这种方式实施。将其称为事实感觉有点奇怪..因为什么也没发生,也没有检查任何东西(如果那天被问到,可能会有更少的人说是)但它符合我的需要。也许我会说谷物是“已知的百分比......以表明它不是测量的百分比”
猜你喜欢
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多