处理星型模式中快照事实 table 的粒度变化
Handling change of grain for a snapshot fact table in a star-schema
问题
您如何处理快照事实的粒度变化(从每周测量到每天测量)table。
背景资料
对于星型模式设计,我想将调查结果纳入事实(例如,在 2015 年第 2 周,80% 的受访者做出了回应 'yes',在第 3 周,76% 等等。 )
这项调查每周进行一次,我只能访问调查结果(本周回答“是”的人的百分比),而不能访问个人回复。
基于(我对)Christopher Adamson 的 "Star Schema: The complete reference" 的解释,我认为我应该使用 快照 事实 table 进行此类测量。
这个事实的日期维度应该是周级别的,并且是其他星中每天发生的其他事实的更细粒度日期维度的一致汇总。
麻烦来了
现在有人决定每天而不是每周进行这些调查。处理这个问题的最佳方法是什么?我目前正在考虑的一些选项:
- 将周维度更改为每日维度,并伪造旧事实,就好像它们发生在一周的最后一天一样。
- 将周维度更改为日维度,每个周维度添加 7 个事实。
- 创造一颗新星,用日常的事实和维度,把旧的当作一个聚合体。
如有任何意见,我将不胜感激。请告诉我我的逻辑是否错误,或者我的问题不清楚:)
我不相信这是快照。每个调查回复代表 "transaction".
使用适当的日期维度,您可以计算 Yes/No 个百分比,按周累计。
此外,这将使您能够显示 "Surveys issued on a Sunday night get more responses" 或 "People who respond on Friday are more likely to answer 'Yes'" 这样的结果。 (人为的例子)
经过澄清,这看起来确实像是定期快照。银行账户余额的例子经常被用来描述类似的场景。
定期快照的一个关键特征是每个维度的每个组合都应该存在。如果你的粮是月粮,那么每个月你都记录这个事实,即使和上个月没有变化。
我认为这是您问题的关键。知道您的谷物可能会从每周变为每天,每天制作您的谷物。这确实意味着您将在一周的每一天重复每周价值,但这是您对事实的了解的真实表现;星期三你只知道它的值和星期一一样。
如果您正确设计了 ETL,则在每日更新开始时无需进行任何更改。
你的第二个选项是我会选择的选项。
问题
您如何处理快照事实的粒度变化(从每周测量到每天测量)table。
背景资料
对于星型模式设计,我想将调查结果纳入事实(例如,在 2015 年第 2 周,80% 的受访者做出了回应 'yes',在第 3 周,76% 等等。 ) 这项调查每周进行一次,我只能访问调查结果(本周回答“是”的人的百分比),而不能访问个人回复。
基于(我对)Christopher Adamson 的 "Star Schema: The complete reference" 的解释,我认为我应该使用 快照 事实 table 进行此类测量。
这个事实的日期维度应该是周级别的,并且是其他星中每天发生的其他事实的更细粒度日期维度的一致汇总。
麻烦来了
现在有人决定每天而不是每周进行这些调查。处理这个问题的最佳方法是什么?我目前正在考虑的一些选项:
- 将周维度更改为每日维度,并伪造旧事实,就好像它们发生在一周的最后一天一样。
- 将周维度更改为日维度,每个周维度添加 7 个事实。
- 创造一颗新星,用日常的事实和维度,把旧的当作一个聚合体。
如有任何意见,我将不胜感激。请告诉我我的逻辑是否错误,或者我的问题不清楚:)
我不相信这是快照。每个调查回复代表 "transaction".
使用适当的日期维度,您可以计算 Yes/No 个百分比,按周累计。
此外,这将使您能够显示 "Surveys issued on a Sunday night get more responses" 或 "People who respond on Friday are more likely to answer 'Yes'" 这样的结果。 (人为的例子)
经过澄清,这看起来确实像是定期快照。银行账户余额的例子经常被用来描述类似的场景。
定期快照的一个关键特征是每个维度的每个组合都应该存在。如果你的粮是月粮,那么每个月你都记录这个事实,即使和上个月没有变化。
我认为这是您问题的关键。知道您的谷物可能会从每周变为每天,每天制作您的谷物。这确实意味着您将在一周的每一天重复每周价值,但这是您对事实的了解的真实表现;星期三你只知道它的值和星期一一样。
如果您正确设计了 ETL,则在每日更新开始时无需进行任何更改。
你的第二个选项是我会选择的选项。