2013-07-19 52 views
0

我们正在开发ETL过程。该过程要求我们从源(Oracle)获取ID并查询另一个数据源(MS SQL DB)。查询需要得到两组数据在SSIS中获取多条记录

  1. 客户详细信息 - 一对一的映射得到所有由同一个ID
的关系ID -multiple记录
  1. 客户账户的账户

我们目前正在使用查找组件,并且在此过程中仅获取客户帐户的第一个匹配项。我们如何获得多个匹配记录 - 我和所有匹配的客户账户。由于两个数据源都不同,我们无法进行内部连接。我们可以想到的另一种选择是使用临时表,但我们想要避免这种情况。有没有其他方式使用SSIS组件来获取同一个ID的多个匹配记录。

+0

你以后想怎么处理数据?将数据添加为派生列并将其保存到其他表中?注意使用具有适当SQL查询的多个数据源和“Union All”将它合并在一起。 – makciook

+0

获得后,我们需要将它插入到目标中。 1-1映射中的记录与1-many中的记录不同。一个是客户细节,另一个是客户账户。我不知道我们是否可以做所有的联盟。 –

回答

1

正如您已经确定的那样,查找组件是一个同步项目。一行流过它,只有一行出来。查找并将数据添加到现有行,但不能将新行添加到流中。

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

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