捕获数据流中的最大值

时间:2016-01-28 13:52:54

标签: ssis

经过几年的不使用后,我才回到SSIS。这是我需要做的。

1) Read a value from a table and store into a variable
2) Create a data flow where I retrieve some number of rows 
   having a value greater than the value retrieved in #1.
3) Store the rows retrieved in #2 into another table
4) Determine the maximum value of a particular column from the rows 
   read in from step #2 and update the table referenced in #1.

前三个步骤简单,直接且有效。但是,我不确定完成#4的最佳方法。

1 个答案:

答案 0 :(得分:5)

Best可以始终是主观的,但最直接的机制是在目的地之前添加多播组件。

多播将允许流经管道的所有数据显示在多个流中。这一切都是通过指向实际数据缓冲区来完成的,并不会导致数据的物理副本散布。

从Multicast中,将其连接到Aggregate组件,并对您正在使用的任何列执行MAX操作。

你知道你只有一行来自这个聚合,所以我使用OLE DB Command组件来更新你的表#1。像

这样的东西
UPDATE ETLStatus
SET MaxValue = ?
WHERE PackageName = ?;

然后你将列名映射为

MaxValue => Parameter_0
PackageName => Parameter_1