将聚合值从数据流任务捕获到变量中

dev*_*ter 4 sql-server ssis bids

我有一个OLEDB(SQL)数据流源(A),它从存储过程中提取结果集并将结果抛出到OLEDB(Oracle)数据流目标(B).

有没有办法将数据集中的聚合值捕获到变量中,所有这些都在数据流任务中?具体来说,我想MAX(<DateValue>)从整个数据集中捕获.

dataflowwithcapture

否则,我必须在不同的数据流任务中拉两次相同的数据,无论我指向A还是指向新位置B.

编辑:我已经知道如何在执行SQL任务的控制流中执行此操作.我问,因为我很想知道我是否可以在数据流任务中完成这项工作,因为我已经在那里收集了数据.有没有办法在数据流中获取聚合值?

Mar*_*ith 6

一种方法是在源和目标之间添加多播转换,并将其转换为脚本组件.

虽然聚合变换也可以工作,但这种方法可以避免添加阻塞变换

在此输入图像描述

将脚本组件配置为目标,为其赋予对变量的读/写访问权限,然后将脚本编辑为类似的内容

//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)