我正在使用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。
任何收到建议的人。
答案 0 :(得分:1)
无需在某处写入数据库,则需要在Script Component
中执行此操作。由于要在分区组中进行行计数,因此需要在对数据进行排序之前对数据进行排序,以便正确地对数据进行排序。为此,您将需要一列来定义行的时间顺序以及类别。
对数据进行排序后,脚本组件应将类别作为输入变量,脚本中将引用该变量以检查当前行是否与上一行相同。如果是,请增加行号并添加到输出中。如果不是,请重设为1
。
您可以查看有关如何进行此操作的指南here
如果您使用的文件非常大,请注意sort
是一个阻塞转换,这意味着您的数据流将一直保持到完成读取所有数据为止。这可能会影响内存使用和数据流运行时间。
答案 1 :(得分:0)
您可以简单地使用“聚合转换”来获取行数,但是请确保对源进行了排序: