我知道SCD-2的概念,我正在努力提高我的技能,做一些练习。
我有下一个场景/实验:
我知道,如果rest只返回带有更改的记录,SCD-2可能非常简单,但在这种情况下,它也可能返回没有更改的记录。
在这种情况下,为了应用SCD-2,人们如何检测公司的数据是否有变化?他们是否比较了所有的字段?
有什么我能看到的例子吗?
发布于 2021-07-28 10:44:49
没有标准的SCD-2,甚至没有一个独特的概念。这是一个通用术语,指的是大量可能的方法。唯一的机会是练习,看看什么适合你的用例。
无论如何,您必须标识维度的自然键和要保留历史记录的属性的集。
当然,通过决定使用自己的代理键,您可能会变得更加复杂。
您提到了流程的有两种主要类型的接口:
定期获得一组完整的维度数据
·您只得到“更改”(又名增量接口)。
矛盾的是,前者比后者更容易处理。
首先,在全维快照中,自然键保持不变,与增量接口相反(在该界面中,可能会对一个实体进行更多的更改)。
此外,您还必须处理延迟更改交付的情况,甚至是更改传递的错误顺序。
接下来的重要决定是,如果您期望删除的发生。这在整个接口中也是微不足道的,您必须定义一些约定,这些信息将如何在delta接口中传递。连接是先前删除的实体是否可以被重用的问题,(即在数据中重新出现)。
如果您支持删除/重用,您将不得不考虑如何在维度表中显示它们。
在任何情况下,您都需要维度中的一些额外列来覆盖历史信息。
一些实现使用change_timestamp,还有一些使用有效性区间valid_from和valid_to。
甚至其他实现也声称需要额外的序列号,因此您可以避免使用相同的时间戳进行更多更改的陷阱。
因此,在寻找某些特定的实现之前,您需要仔细地决定上面的选项。例如,full和delta接口导致一个完全不同的实现。
https://stackoverflow.com/questions/68558270
复制相似问题