在SSIS中获取多个记录

时间:2013-07-19 07:37:17

标签: ssis etl

我们正在开发ETL流程。该过程要求我们从源(Oracle)获取ID并查询另一个数据源(MS SQL DB)。查询需要获取两组数据

  1. 客户详细信息 - 一对一映射获取所有帐户
    1. 客户帐户按关系ID - 相同ID的多个记录
  2. 我们目前正在使用查找组件,并且在此过程中只获得客户帐户的第一个匹配项。我们如何获得多个匹配记录 - 即所有匹配的客户帐户。由于两个数据源都不同,我们无法进行内部连接。我们可以想到的另一种选择是使用临时表,但我们想避免这种情况。是否有任何其他方法使用SSIS组件来获取相同ID的多个匹配记录。

1 个答案:

答案 0 :(得分:1)

正如您已经确定的那样,Lookup Component是一个Synchronous项。一行流过它,只有一行出来。查找并将数据添加到现有行,但无法在流中添加新行。

除了我正在使用DB2之外,我一直在使用Asynchronous Script。我会在ReadOnly模式下将id传递给Component,并定义我的新Output和任务将生成的所有列。是的,这很乏味。

在我的脚本中,在我的PreExecute中,我建立了与我的数据源的连接,然后在我发出单件查询到我的数据库以获取所有相关帐户。我用返回的数据做了两件事。我调用了AddRow方法并填充了字段 - 这将数据发送到下游。我还在内存中保留了本地副本,因为我可以在给定的运行中多次使用相同的ID(人们购买了金融产品A并且在同一批次中,他们也购买了产品B)。这样可以省去数据库之旅。您可以更好地了解您的数据以及这是否有帮助。