我必须实现的流程根据列值的最后两个字符进行条件拆分。 出于代码维护和性能原因,我需要在 C# 中进行拆分。
如何编码?
我对收集部分没问题,但我不清楚缓冲区部分。 我确实有 Input0_ProcessInputRow
output = ComponentMetaData.OutputCollection["CLEANED_DATA_" + Row.ISO2];
但是对于每个输入行,我需要对相应的输出缓冲区执行 AddRow...
我该怎么做?
谢谢
最佳答案
SSIS 中的组件是用 C# 编写的,因此与数据流组件相比,脚本组件不会获得性能提升。我很想知道通过条件拆分组件和脚本组件实现条件拆分的两个相同包之间的基准性能差异是什么。您可能在其他地方遇到了性能瓶颈。
您提到拆分是动态处理的,您能否更具体地说明其规则是什么?通常,可以使用派生列转换处理行拆分,该转换可以创建一个名为 RowSplitIndicator 的新列,该列可以是位、整数、字符串值。从那里,可以根据 RowSplitIndicator 中的任何值有条件地拆分该行。在拆分逻辑复杂的情况下,这可以简化整体设计。
然而,您的问题的答案是您首先需要向管道缓冲区添加一行,然后您可以将值分配给缓冲区的列:
MyAddressOutputBuffer.AddRow();
MyAddressOutputBuffer.OutputColumnName = YourVariable;
注意:您的脚本组件现在是异步的,因为有一行进出有很多行。
关于c# - SSIS:C# 中的条件拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56075394/