【发布时间】:2020-09-16 09:44:54
【问题描述】:
我正在尝试完成一些在 SQL 中很容易完成的事情,但在不使用 SQL 的情况下在 SSIS 中完成似乎非常具有挑战性。基本上,我需要合并和连接一个多对一关系的字段。
给定实体:[合同项目](许多)到(一个)[帐户]
有一个字段 [ari_productsummary] 包含 Contract Item 实体中列出的产品。我们希望将该值作为 [ari_activecontractitems] 写入 Account。但是,Account 可能有多个与之关联的Contract Item 记录,在这种情况下,我们希望连接这些值。我们也只希望连接不同的值(在我的数据流中已经解决了不同的行)。
这可以通过写入临时表来完成,然后使用查询或视图来获取汇总结果,如下所示。我创建了一个名为 TESTTABLE 的 SQL 表,其中包含来自 Contract Item 实体的 [ari_productsummary] 以及引用的 [accountid em>] 将其映射回 帐户。然后我写了以下查询作为视图:
SELECT distinct accountid,
(SELECT TT2.ari_productsummary + '; '
FROM TESTTABLE TT2
WHERE TT2.accountid = TT.accountid
FOR XML PATH ('')
) AS 'ari_activecontractitems'
FROM TESTTABLE TT
执行该查询为我提供了我想要的结果,然后我可以将其用于导入 Account 实体,如下所示:
但是我如何在 SSIS 数据流中做到这一点而不写入 SQL 表作为数据的临时占位符??我想在里面完成整个过程一个数据流容器,不使用临时 SQL 表/视图。整个总结过程需要即时完成:
是否有人提供不需要临时 SQL 表/视图/查询但完全包含在数据流中的解决方案?
我正在使用 VS 2017 和 KingswaySoft Dynamic CRM 365 ETL 工具集来开发我的解决方案/包。
【问题讨论】:
-
我没有想到任何原生组件。我认为您不只是在执行 SQL 任务中直接更新帐户的原因(完全跳过临时表和数据流任务是因为它是动态的,而且那里的一切都更难?)
-
@billinkc 正确,无法在执行 SQL 任务中更新帐户,必须使用 KingswaySoft 工具在数据流任务中读取/写入 Dynamics。我不介意我最初的解决方案,因为我认为它运行良好,但我的老板希望我消除以后可能成为故障点的任何步骤,并认为 SQL 服务器是一个潜在的故障点,并希望我探索所有选项。
标签: ssis visual-studio-2017 integration sql-server-data-tools kingswaysoft