我热衷于找到一个有效的设计解决方案,Ralph Kimball 的模型建议处理 SCD 类型 2 维度的历史负载,涉及多个源表,而不使用 PIT 表。
源数据由许多启用 CDC 的表组成,其中有几个日内更改。目标数据仓库预计每天都有粮食。
在过去,我使用过时间点 (PIT) 表,它使用维度构建所涉及的源表的业务键来构建日终快照。当涉及的源表既宽又深时,这极大地优化了维度加载能力。我的组织更喜欢使用 Kimball 的方法,因为 PIT 是一个 DV 概念,因此它是脱离桌面的。
请分享替代方法。您可能使用过的一些通用示例或任何有用的提示将很高兴听到。
绝对我理解 PIT 可以很好地加载初始加载的历史数据(不幸的是,Kimball 似乎没有提到它,因此解决方案设计者并不热衷于允许使用 PIT 加载)
例如,我必须创建一个具有属性 Member_Status 的成员维度,该属性是根据成员在给定时间点持有的所有帐户派生的。
举一个非常简单的例子,假设:在给定日期 D1 一个成员有 1 个打开和 1 个关闭的帐户 成员状态是:第二天活动 D2,他有 2 个关闭的帐户,成员状态是:第二天退出 D3,他打开另一个账号,会员状态为:再次活跃
现在必须回顾性加载整个内容(例如,过去 10 年的数据作为 SCD2) 我可以在其中看到 2 个选项
- 从开始日期开始每天循环运行负载(不是有效的解决方案)
- 创建一个 PIT(不允许:()
还有其他选择吗?
“源数据由许多启用 CDC 的表组成,其中有几个日内变化。目标数据仓库预计会有一个每日粒度。”只是为了解释这一点
说有一个member(实体)和account(实体) Member:Account的关系是1:Many
在一天中,成员可以进行多次更新(例如更正姓名、出生日期、地址等)对于帐户来说也是如此,CDC 将捕获所有这些更改,而对于目标 DWH,只需要捕获一天结束的快照。实现它并不是一个很大的障碍,我的主要问题围绕初始负载和处理它的有效策略。