Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将事实数据与消除重复的维度记录匹配_Sql Server_Ssis_Data Warehouse - Fatal编程技术网

Sql server 将事实数据与消除重复的维度记录匹配

Sql server 将事实数据与消除重复的维度记录匹配,sql-server,ssis,data-warehouse,Sql Server,Ssis,Data Warehouse,我正在为一个客户启动一个数据仓库项目,该客户有多个物理位置,每个位置都有相同LOB数据库的单独实例。站点之间有很多“公共”数据,但系统是孤立的,因此概念上指同一事物的数据在源中有不同的表示形式 例如,考虑一个产品类别。每个位置的产品类别列表都是相同的,但自动生成的密钥会有所不同。当数据被提取、暂存并加载到仓库中相应的product category维度表中时,类别会被有效地复制,因为它们具有不同的源系统或“自然”键 显然,数据需要进行重复数据消除,但是什么会成为保留在重复数据消除维度记录上的代理

我正在为一个客户启动一个数据仓库项目,该客户有多个物理位置,每个位置都有相同LOB数据库的单独实例。站点之间有很多“公共”数据,但系统是孤立的,因此概念上指同一事物的数据在源中有不同的表示形式

例如,考虑一个产品类别。每个位置的产品类别列表都是相同的,但自动生成的密钥会有所不同。当数据被提取、暂存并加载到仓库中相应的product category维度表中时,类别会被有效地复制,因为它们具有不同的源系统或“自然”键

显然,数据需要进行重复数据消除,但是什么会成为保留在重复数据消除维度记录上的代理项键呢?请记住,引用产品类别的数据将从其原始位置使用代理密钥。因此,如果我有三个不同的位置,我将有三个不同的自然键,用于相同的产品类别和对应于该产品类别的销售数据,它也引用了这三个自然键,但最终引用了相同的概念类别。我有几种方法可以解决这个问题:

  • 如果有三个位置,请将三个不同的代理键写入一维记录。这将使ETL过程中的匹配变得简单,但它的可伸缩性不强,因为可以而且可能会添加其他位置。对于每一个在线的新位置,我都需要为每个维度表添加一个额外的自然键字段,其中包含这样的重复数据消除记录

  • 创建一个查找表,记录对应维度表中每个自然键与其对应代理键之间的映射。我不确定这种方法是否非常标准,也不确定它的可维护性


  • 对于如何处理上述场景,我们将不胜感激。

    我们使用方法2。想象有一天有数百个地点,你会发现方法1根本不可能

    方法2是可伸缩的,并且非常容易维护,因为您的查找表只会垂直增长