Sql 在ssis中映射代理项密钥

Sql 在ssis中映射代理项密钥,sql,sql-server,ssis,data-warehouse,Sql,Sql Server,Ssis,Data Warehouse,如何将作为外键的代理键映射到ssis中的其他维度表 我有一张昏暗的露营桌,像这样: Dim.Camp(campkey int identity(1,1),Advkey int,campbk int,campname varchar(10)) Dim.Adv(Advkey int identity(1,1),Advbk int) 以上是我的维度表 这些是我的暂存表: Camp(Advid int,campid int,campname varchar(10)) Adv(Advid int)

如何将作为外键的代理键映射到ssis中的其他维度表

我有一张昏暗的露营桌,像这样:

Dim.Camp(campkey int identity(1,1),Advkey int,campbk int,campname varchar(10))

Dim.Adv(Advkey int identity(1,1),Advbk int)
以上是我的维度表

这些是我的暂存表:

Camp(Advid int,campid int,campname varchar(10))

Adv(Advid int)
我使用我的暂存表在ssis中通过循环加载Dim.camp任务:

然后我得到:

Dim.Camp(campkey int identity(1,1),Advkey int,campbk int,campname varchar(10)) populated accept
Advkey,它获取其列中的所有空值,因为在临时表中没有相应的映射


有人能告诉我我做错了什么……或者如何做到这一点吗?

我想知道源系统或暂存表中的实体或表Camp和Adv之间的关系。您总是需要业务密钥来执行维度表中的查找,也就是说,您需要campbk来查找Dim.Camp中的记录,而Advbk来查找Dim.Camp维度中的记录

如果我理解正确,您应该首先在执行SQL任务或数据流任务中使用merge命令从staging加载Dim.Adv。然后,您可以从舞台上加载Dim.Camp,如下所示:

源查询:

从Staging.Camp中选择Advid作为Advbk、campid campbk、campname

然后制作一个查找表:Dim.Adv并获取Dim.Advid,其中Dim.Adv.Advbk=Advbk

最后制作另一个查找表:Dim.Camp,然后确定是否必须更新或插入记录

如果您还有其他问题,请告诉我

亲切问候,


Paul

我可以使用staging中的一个表和DW中的一个表吗…就像我可以使用staging.Camp lookup Dim.Adv一样。。。你能把我和这些例子联系起来吗?我想你有我的问题了,没有相应的地图提示!在我的舞台上。Adv!你问了关系,顺便说一句,桌子。。。Camp具有Advid,它是Advid的外键。您可以使用staging.Camp.Advid在dim.Adv表中查找dim.Adv.Advid,然后使用staging.Camp.campId进行另一次查找以获取dim.Camp.campId,然后确定是否应插入或删除传入记录hanks a..lot,并在我的dim表中创建\ u by,更新\ u by。。。我可以通过…创建,但当记录中有更改/更新时,应填充相应的更新人…您能告诉我如何获得该记录吗…我在ssis中使用了缓慢更改维度向导。。。但是我不知道怎么做才好!您好,请提供您用于SCD的变更类型。