dev*_*ter 4 sql-server ssis bids
我有一个OLEDB(SQL)数据流源(A),它从存储过程中提取结果集并将结果抛出到OLEDB(Oracle)数据流目标(B).
有没有办法将数据集中的聚合值捕获到变量中,所有这些都在数据流任务中?具体来说,我想MAX(<DateValue>)从整个数据集中捕获.

否则,我必须在不同的数据流任务中拉两次相同的数据,无论我指向A还是指向新位置B.
编辑:我已经知道如何在执行SQL任务的控制流中执行此操作.我问,因为我很想知道我是否可以在数据流任务中完成这项工作,因为我已经在那里收集了数据.有没有办法在数据流中获取聚合值?
一种方法是在源和目标之间添加多播转换,并将其转换为脚本组件.
虽然聚合变换也可以工作,但这种方法可以避免添加阻塞变换

将脚本组件配置为目标,为其赋予对变量的读/写访问权限,然后将脚本编辑为类似的内容
//Instance level variable
DateTime? maxDate = null;
public override void PostExecute()
{
base.PostExecute();
if (maxDate.HasValue)
{
this.Variables.MaxDate = maxDate.Value;
}
System.Windows.Forms.MessageBox.Show(this.Variables.MaxDate.ToString());
}
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
if (!Row.createdate_IsNull)
{
maxDate = Row.createdate < maxDate ? maxDate : Row.createdate;
}
}
Run Code Online (Sandbox Code Playgroud)