【发布时间】:2021-03-07 19:54:31
【问题描述】:
有一个困扰我一段时间的问题。
在 ETL 过程中用代理键替换主键在实践中的表现如何?就像工作流程一样 - 它只是分配新的身份吗?如果是这样,以前的值如何,如何用新创建的业务键替换现有的业务键?
在我看来,具体的工作流程如下所示,但我还没有在实践中这样做过:
- 删除 DimProduct 和 FactSales 表中的现有 PK_Product 和 FK_Product。
- 将新的 IDENTITY 列设置为 dimProduct。
- 将新列添加到 FactSales,其值来自新创建的 IDENTITY 列,基于先前业务键的联接。
- 删除两个表中的旧 ProductKey 列。
- 为新创建的代理 IDENTITY 键添加约束。
- 为未来的值分配表之间的引用。
但是请告诉我你在工作中是如何做到这一点的并纠正我,因为我认为我错了。
【问题讨论】:
-
澄清一下,你是说你有一个现有的 DW,出于某种原因,为了使用源系统中的 PK,你现在正试图正确地修复它,使用SK?您不是在问如何在您从头开始构建的 DW 中使用 SK?
-
让我们考虑这两种情况。更具体地说,我对构建 DWH 和从头开始分配代理键的技术过程很感兴趣
标签: sql etl primary-key surrogate-key sql-data-warehouse