我用SQL Server 2016
而且我很忙DataFlow task
。在我的DataFlow task
中,我Multicast component
出于某种原因使用。在 my 中创建新流后DataFlow
,我需要删除新流中的一些列,因为它们无用。
只是为了获取更多信息,我需要这样做,因为我的流程中有 200 多个列,而我需要的这些列不到 10 个。
如何删除DataFlow Task
SSIS 中的列?
我用SQL Server 2016
而且我很忙DataFlow task
。在我的DataFlow task
中,我Multicast component
出于某种原因使用。在 my 中创建新流后DataFlow
,我需要删除新流中的一些列,因为它们无用。
只是为了获取更多信息,我需要这样做,因为我的流程中有 200 多个列,而我需要的这些列不到 10 个。
如何删除DataFlow Task
SSIS 中的列?
我相信您可以只将一个数据流路径传递给一个UNION ALL
任务,以从该单个数据流中删除列。
获取要从中删除列的单个数据流路径并将其传递给Union All
任务。然后打开Union All
任务,右键单击要从该路径中删除的列,然后选择删除。
通常我认为应该更改数据源以不发送不需要的列,但您的情况很特殊。多播中的一条路径需要来自源的所有列,而一条路径不需要。
首先,我认为您所要求的不会提供更好的性能,因为数据是从源加载的,然后在使用Multicast
Then The component that will reduce the column number
...
您可以通过多种方式执行此操作:
如果您可以DataFlow Task
使用缩减列源创建另一个 (例如:具有特定列的 OLEDB 命令),那就更好了
您可以添加Script component
异步输出(如下图所示)并将特定列添加到输出中,使用 Vb.net 或 C# 脚本映射它们,如下所示:
Output0Buffer.AddRow()
Output0Budder.OutColumn = Row.inColumn
UNION ALL
组件并选择您需要的列旁注:最好测试每个场景的性能并选择更好的
您可以添加某种额外的组件。但是,这永远不会降低复杂性或提高性能。想想看,从逻辑上讲,您正在添加一个需要维护的附加接口。性能方面,任何消除列的操作都意味着将一组行从一个缓冲区复制到另一个缓冲区。这称为异步转换,在此处和此处进行更好的描述。您可以想象复制行的效率低于就地更新它们。
以下是一些降低复杂性的建议,这反过来又会提高性能:
这些指南将使您朝着大方向前进,但请发布更多有关调整特定性能问题的问题。