Sql 如何在ETL期间用代理密钥替换主键?
有一个问题一直困扰着我 在ETL过程中,用代理键替换主键的实际效果如何?就像什么是工作流-它只是分配新的身份吗?如果是,那么以前的值如何,如何用新创建的业务键替换现有的业务键 在我看来,一个特定的工作流如下所示,但我还没有在实践中这样做:Sql 如何在ETL期间用代理密钥替换主键?,sql,etl,primary-key,surrogate-key,sql-data-warehouse,Sql,Etl,Primary Key,Surrogate Key,Sql Data Warehouse,有一个问题一直困扰着我 在ETL过程中,用代理键替换主键的实际效果如何?就像什么是工作流-它只是分配新的身份吗?如果是,那么以前的值如何,如何用新创建的业务键替换现有的业务键 在我看来,一个特定的工作流如下所示,但我还没有在实践中这样做: 在DimProduct和FactSales表中删除现有PK_产品和FK_产品 将新标识列设置为dimProduct 将新列添加到FactSales,其值来自基于上一个业务密钥上的联接的新创建的标识列 在两个表中删除旧的ProductKey列 为新创建的代理标识
但请告诉我您在工作中是如何做到这一点的,并纠正我,因为我认为我错了。让我们以从单一源系统加载目标维度的最简单情况为例。基本步骤是:
这些显然是您需要遵循的逻辑步骤。实际上如何实现它们完全取决于您的ETL/ELT组件,因此在数据库中运行合并命令看起来与Informatica工作流非常不同,但“隐藏”这两个过程遵循相同的逻辑步骤,只是为了澄清一下,您是说您有一个基于某种原因而构建的现有DW吗,要从源系统使用PKs,并且您现在正在尝试将其修复为正确使用SKs?你不是在问如何在你正在从头开始建造的DW中使用SKS?让我们考虑一下这两种情况。更具体地说,我感兴趣的是构建DWH和从scratchThank分配代理密钥的技术过程。这非常有帮助。花了这么多时间在搜索如何从头实现数据仓库的实践练习上,但什么都没有找到。