【问题标题】:SSIS Script Component Store all rowsSSIS脚本组件存储所有行
【发布时间】:2009-04-22 13:03:52
【问题描述】:

我有一个 SSIS 脚本组件,它从输入中获取行。

输入中的一行是一个布尔值,用于标识该行的类型是 A 还是 B。

如何让脚本将所有输入行加载到正确的行集合中。

此外,任何关于如何使用行集合然后输出它们的指南也会很棒。

【问题讨论】:

    标签: scripting ssis asynchronous components


    【解决方案1】:

    您可以在这里使用 Jamie Thomson 在他的博客文章中所做的事情:

    http://consultingblogs.emc.com/jamiethomson/archive/2005/09/05/SSIS-Nugget_3A00_-Multiple-outputs-from-a-synchronous-script-transform.aspx

    他使用脚本组件并根据条件将输出拆分为多个输出流。他在他的帖子中非常简洁地解释了如何配置组件以及如何将正确的行发送到正确的输出流。希望这就是你要找的。

    【讨论】:

      【解决方案2】:

      由于脚本组件使用的是 VB,所以应该是这样的

      If Column(type) = True Then
        CollectionA.Add(row)
      Else
        CollectionB.Add(row)
      End If
      

      但是,您可能希望考虑使用 DataTable,因为它更能代表您要存储的内容。

      当所有行都通过组件时,您可以绑定一个事件。当该事件执行时,您可以将数据从 DataTables 移动到数据流中存在的一些变量中。如果您将这些变量键入为表值,我相信您可以在数据流中使用这些变量。

      您最好的选择可能是将整个操作放入控制流中的单独 DataFlow 组件中,因为这听起来好像您可能正在更改输出的行数,而您最好的选择可能是使用多个 DataFlow 组件.

      【讨论】:

      • 我需要做的是这个,也许我试图以错误的方式解决问题......我有两张相同的表格,一张用于通信,一张用于通话。我想要每个表有两个集合。然后,您浏览呼叫表,并为每一行查看是否可以找到具有相同日期的通讯。如果您可以将通讯复制到结果中,如果您不能使用呼叫。你不应该重复使用同一个通讯。
      • 我个人只会做一个正常的加入。不是查找,而是直接连接。我假设您不希望粒度精确到时间,而只是一天,在这种情况下,您可以通过将两个 DateTime 字段转换为 VarChar(10) 字段(截断时间)并加入转换后的字段来进行连接字段。这可能会导致多对多匹配,但听起来它应该可以为您提供所需的内容。
      • 我不希望多对多匹配这不是问题。如果我能在同一天找到一个通讯来替换它,我想删除这些电话。但我永远不应该使用相同的通信来代替两个单独的调用
      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      相关资源
      最近更新 更多