这是我的问题,在谷歌上我可以找到许多帖子,我们可以使用动态缓存实现SCD2……
当我们有一个动态缓存时...假设有一条新记录出现,它被插入...如果有更改的记录进入,那么现有的记录就会更新。
所以考虑这样一个场景,其中一个更改的记录进入...现有记录将被更改。
现在对于SCD2..。我们更新现有的,并将新的作为当前插入。
使用Newlookup端口,我们可以确定是否有更改或新的或没有更改...并且绝对可以根据SCD2更新插入目标。
但在这种情况下,您的目标表和动态缓存将不同步。因为您的缓存只会被更新,但您的目标将根据SCD2历史记录维护进行更新以及插入新记录。
所以,如果你的缓存与目标...then不同步,我们怎么能说SCD2可以使用动态查找来实现。
请分享您的观点。
发布于 2014-02-22 02:59:03
基本上,您只希望保持当前行版本与查找缓存同步。一旦新行被处理,它就会进入查找缓存和目标表:
Lookup cache | DB Table
Key Active Description | Key Active Description
-------------------------------------------------------------------
AA1 1 The Moon AA1 1 The Moon现在,如果我们得到一个具有相同键的行,但描述已更新:
Lookup cache | DB Table
Key Active Description | Key Active Description
-------------------------------------------------------------------
AA1 1 The Sun AA1 1 The Sun
AA1 0 The Moon查找缓存将被更新,我们向目标表插入新的行,并将现有行标记为非活动。现在,如果您比较活动行,则查找缓存与DB同步。
发布于 2016-06-26 15:49:19
Lookup仅保留来自目标表的活动记录。这就是我们使用查找覆盖的原因。我们的座右铭应该是在查找表和目标表中保持这些活动记录的同步。在SCD2中,更新的记录被插入到目标表中,新的开始日期作为活动记录,旧的记录将被终止。因此,我们需要在查找缓存中用新记录替换旧记录,以保持活动记录的同步。
https://stackoverflow.com/questions/21936027
复制相似问题