【问题标题】:SSIS - How do I join two sources on a complex expression?SSIS - 如何在复杂表达式中加入两个源?
【发布时间】:2013-08-19 17:38:51
【问题描述】:

我有一个数据源,其中有一列 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 数据流任务中完成此任务?

【问题讨论】:

  • 我认为我看到的数据不足以理解您的问题。也许来自带有部件号的源的一些数据和来自第二个数据源的两行数据:一个带有匹配的掩码,一个没有匹配掩码,这将有助于我虚弱的大脑

标签: ssis dataflow


【解决方案1】:

创建 2 个数据源,一个从源获取所有部件号,另一个使用内部查询获取所有产品 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

【讨论】:

  • 谢谢。我害怕那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 1970-01-01
相关资源
最近更新 更多