SSIS计数重复

时间:2019-05-24 01:50:50

标签: ssis

我正在使用SSIS,并具有如下表格:

Region    | Process      | Queue    | Col 1    | Col 2
----------------------------------------------------------
EMEA        ProcA          Q101       XXX        YYY
EMEA        ProcB          Q101       AAA        BBB
EMEA        ProcB          Q101       CCC        DDD
AMERICAS    ProcA          Q099       EEE        FFF
AMERICAS    ProcA          Q099       GGG        HHH
AMERICAS    ProcA          Q099       GGG        HHH

我想添加一列来计算Region,Process和Queue重复项的数量。输出应如下所示:

Region    | Process      | Queue    | Col 1    | Col 2   | Count
----------------------------------------------------------------
EMEA        ProcA          Q101       XXX        YYY       1
EMEA        ProcB          Q101       AAA        BBB       1
EMEA        ProcB          Q101       CCC        DDD       2
AMERICAS    ProcA          Q099       EEE        FFF       1
AMERICAS    ProcA          Q099       GGG        HHH       2
AMERICAS    ProcA          Q099       GGG        HHH       3

我宁愿不使用SQL,因为此数据位于数据流的中间,因此我必须写到SQL Server才能使用SQL。

任何收到建议的人。

2 个答案:

答案 0 :(得分:1)

无需在某处写入数据库,则需要在Script Component中执行此操作。由于要在分区组中进行行计数,因此需要在对数据进行排序之前对数据进行排序,以便正确地对数据进行排序。为此,您将需要一列来定义行的时间顺序以及类别。

对数据进行排序后,脚本组件应将类别作为输入变量,脚本中将引用该变量以检查当前行是否与上一行相同。如果是,请增加行号并添加到输出中。如果不是,请重设为1

您可以查看有关如何进行此操作的指南here

如果您使用的文件非常大,请注意sort是一个阻塞转换,这意味着您的数据流将一直保持到完成读取所有数据为止。这可能会影响内存使用和数据流运行时间。

答案 1 :(得分:0)

您可以简单地使用“聚合转换”来获取行数,但是请确保对源进行了排序: