Database design 涉及多个源表的Kimball模型中的历史负载SCD2

Database design 涉及多个源表的Kimball模型中的历史负载SCD2,database-design,data-warehouse,datamodel,sql-data-warehouse,data-vault,Database Design,Data Warehouse,Datamodel,Sql Data Warehouse,Data Vault,我渴望找到一个高效的设计解决方案,Ralph Kimball的模型建议处理SCD类型2维的历史负载,涉及多个源表,而不使用PIT表 源数据由许多启用CDC的表组成,其中包含几项日内更改。目标数据仓库预计将有一个每日计划 在过去,我使用了时间点(PIT)表,它使用维度构建所涉及的源表的业务键构建一天结束快照。当涉及的源表既宽又深时,这将极大地优化维度加载能力。我的组织更倾向于使用Kimball的方法,因为PIT是一个DV概念,因此它不在桌面上 请分享其他方法。一些通用的例子或任何有用的提示,你可能

我渴望找到一个高效的设计解决方案,Ralph Kimball的模型建议处理SCD类型2维的历史负载,涉及多个源表,而不使用PIT表


源数据由许多启用CDC的表组成,其中包含几项日内更改。目标数据仓库预计将有一个每日计划

在过去,我使用了时间点(PIT)表,它使用维度构建所涉及的源表的业务键构建一天结束快照。当涉及的源表既宽又深时,这将极大地优化维度加载能力。我的组织更倾向于使用Kimball的方法,因为PIT是一个DV概念,因此它不在桌面上

请分享其他方法。一些通用的例子或任何有用的提示,你可能已经使用将是伟大的听到


我绝对理解PIT可以很好地加载初始加载的历史数据(不幸的是,Kimball似乎没有提到这一点,因此解决方案设计师不希望允许使用PIT加载)

例如,我必须创建一个成员维度,该维度具有一个属性Member_Status,该属性基于该成员在给定时间点持有的所有帐户而派生

举一个非常简单的例子,如果: 在给定日期D1,会员有1个未结账户和1个已结账户会员状态为:活动 第二天D2,他有2个已关闭的账户,会员状态为:退出 第二天D3,他开了另一个账户,会员状态为:再次激活

现在必须回顾性地加载整个事件(例如,作为SCD2的过去10年的数据) 在那里我可以看到2个选项

  • 从开始日期起每天运行load in循环(不是有效的解决方案)
  • 创建坑(不允许:()
  • 还有其他选择吗



    “源数据由许多启用CDC的表组成,并有几次日内更改。目标数据仓库预计每天都会有一次更改。” 再解释一下

    假设有一个成员(实体)和账户(实体)成员:账户关系为1:多

    在一天中,一名会员可以对账户进行多次相同的更新(如姓名、出生日期、地址等的更正)
    CDC将捕获所有这些更改,而对于目标DWH,只需要捕获一天结束时的快照。要实现这一点并不是一个大障碍,我的主要问题是初始负载和有效的处理策略。

    源数据由许多支持CDC的表组成,其中包含几项日内更改。目标DWHta仓库预计每天都有粮食。你能解释更多吗?也许有一个样本数据?我不确定我是否理解这个问题。你想从许多来源构建一个SCD2维度,而不使用PIT表。PIT不仅仅是DV拥有的一个概念。如果它对你有效,就使用它。排除设计方法是很奇怪的,因为它看起来很简单属于不同的阵营。事实上,如果您的所有维度每天都在变化,并且您使用的是SCD2……那么您的维度表实际上就是一个每日快照表。源数据由许多启用CDC的表组成,并且有几次日内的变化。目标数据仓库预计每天都有一个粒度。您能解释一下吗n更多?可能有一个样本数据?我不确定我是否理解这个问题。你想从许多来源构建一个SCD2维度,而不使用PIT表。PIT不仅仅是DV拥有的一个概念。如果它对你有用,就使用它。排除设计方法很奇怪,因为它似乎属于不同的阵营。事实上,如果你所有的维度您每天都在使用SCD2,您的维度表实际上是一个每日快照表。