【发布时间】:2014-02-17 11:03:22
【问题描述】:
我有一个使用内部代理键和类型 2 渐变维度的数据仓库。 在清算中,我们只有来自 erp 系统的业务密钥,如下所示:
在数据仓库中,我们希望使用代理键(注意:文章价格从 500 美元更改为 1000 美元,并且文章尽可能使用代理键,此处仅适用于制造商)。
如果我们只是使用业务密钥没问题,只需比较、更新旧条目、插入新条目。 但是使用代理键的最佳方法是什么?
从清除中的数据仓库中获取现有的 Ids(0 或 -1 表示尚不存在)然后比较条目?
将业务密钥也保留在数据仓库中,比较它们并更新 ID,然后在数据仓库中?
【问题讨论】:
-
不清楚您的要求是什么。如果您想将数据从源清除加载到 dwh - 您必须生成代理键 - 为此,您还将源系统主键与代理键一起保存在 dwh 表中。并且在加载时,您会根据源/自然键在 dwh 表中查找数据,如果记录存在,则比较要跟踪更改的列,如果值发生更改,则更新现有行的 validuntil 并使用新的 validfrom 插入新行..
-
所以您的意思是最佳做法是将业务密钥保留在数据仓库中,就像最后一个 screenshot 一样?
-
是的,将源业务密钥保存在 dwh 中是有意义的
标签: etl data-warehouse surrogate-key scd