首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据建模中的SCD-2 :如何检测变化?

数据建模中的SCD-2 :如何检测变化?
EN

Stack Overflow用户
提问于 2021-07-28 09:59:56
回答 1查看 219关注 0票数 1

我知道SCD-2的概念,我正在努力提高我的技能,做一些练习。

我有下一个场景/实验:

  1. ,我每天都会调用rest来提取有关公司的信息。在我对DB的初始加载中,一切都是新的,所以一切都很容易。
  2. 第二天调用相同的rest,它可能返回相同的公司,但其中一些公司可能有(或不)一些更改(即它们改变了规模、利润、位置,……)

我知道,如果rest只返回带有更改的记录,SCD-2可能非常简单,但在这种情况下,它也可能返回没有更改的记录。

在这种情况下,为了应用SCD-2,人们如何检测公司的数据是否有变化?他们是否比较了所有的字段?

有什么我能看到的例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-28 10:44:49

没有标准的SCD-2,甚至没有一个独特的概念。这是一个通用术语,指的是大量可能的方法。唯一的机会是练习,看看什么适合你的用例。

无论如何,您必须标识维度的自然键和要保留历史记录的属性的集。

当然,通过决定使用自己的代理键,您可能会变得更加复杂。

您提到了流程的有两种主要类型的接口:

定期获得一组完整的维度数据

·您只得到“更改”(又名增量接口)。

矛盾的是,前者比后者更容易处理。

首先,在全维快照中,自然键保持不变,与增量接口相反(在该界面中,可能会对一个实体进行更多的更改)。

此外,您还必须处理延迟更改交付的情况,甚至是更改传递的错误顺序。

接下来的重要决定是,如果您期望删除的发生。这在整个接口中也是微不足道的,您必须定义一些约定,这些信息将如何在delta接口中传递。连接是先前删除的实体是否可以被重用的问题,(即在数据中重新出现)。

如果您支持删除/重用,您将不得不考虑如何在维度表中显示它们。

在任何情况下,您都需要维度中的一些额外列来覆盖历史信息。

一些实现使用change_timestamp,还有一些使用有效性区间valid_from和valid_to。

甚至其他实现也声称需要额外的序列号,因此您可以避免使用相同的时间戳进行更多更改的陷阱。

因此,在寻找某些特定的实现之前,您需要仔细地决定上面的选项。例如,full和delta接口导致一个完全不同的实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68558270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档