SSIS - 如何在复杂表达式上连接两个源?

时间:2013-08-19 17:38:51

标签: ssis dataflow

我有一个数据源,其中包含一个Part_Number列。

我的第二个数据源包含Product_Family_ID,Product_ID和Part_Mask。

Mask是类似表达式中使用的模式字符串,其中part_number与mask类似。例如'NXA%'或'001- [abcd] [456] 9-121%'

通常我们根据可用的产品部件掩码查找产品系列的合法部件号,但在这种情况下,我需要朝另一个方向前进。根据部件号,我必须找到该产品系列中的所有相关产品,并将其存储在汇总表中。

在T-SQL中模拟:

declare @partlist table (partnumber varchar(100))

insert into @partlist (partnumber) values ('nxampvg1')

select distinct pl.partnumber, match.Product_ID
from @partlist pl
join (  select m.masks, p.product_id from  MCS_ProductFamily_PartMasks m
    join Product p on m.ProductFamilyID = p.ProductFamily_ID) match
    on pl.partnumber like match.Masks

期望的输出:

Part_Number Product_ID
----------- ----------
nxampvg1    15629
nxampvg1    15631
nxampvg1    15632
nxampvg1    15633
nxampvg1    15634
nxampvg1    15635
nxampvg1    15636
nxampvg1    15637
nxampvg1    15638
nxampvg1    15639

如何在SSIS数据流任务中完成此任务?

1 个答案:

答案 0 :(得分:1)

创建2个数据源,一个从源1获取所有部件号,另一个使用内部查询获取所有产品ID,产品系列和掩码 select m.masks, p.product_id from MCS_ProductFamily_PartMasks m join Product p on m.ProductFamilyID = p.ProductFamily_ID 来源二。这些数据目标应该是同一个sql server上的登台表。然后,只需使用您在示例中说明的SQL的派生方式:select distinct pl.partnumber, match.Product_ID from STG_SOURCE_ONE pl join STG_SOURCE_TWO match on pl.partnumber like match.Masks