0

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

  1. 客户明细——一对一映射获取所有账户
    1. 按关系 ID 划分的客户帐户 - 同一 ID 的多个记录

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

4

1 回答 1

1

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

除了我在使用 DB2 之外,我一直站在你的立场上,最终我选择了Asynchronous Script。我会在 ReadOnly 模式下将 id 传递给组件,并定义我的新输出和任务将生成的所有列。是的,这很乏味。

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

于 2013-07-19T12:13:19.033 回答