You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSIS脚本组件中获取上一行数据计算销售增长率

SSIS脚本组件计算环比增长率操作步骤
  • 第一步:在SSIS包中新建数据流任务,添加对应源组件(如OLE DB源、平面文件源)连接到你的销售数据表,读取Month_ID、Month_Sales字段,必须提前对源数据按Month_ID升序排序,否则环比计算结果会出错。
  • 第二步:拖入脚本组件,弹出组件类型选择窗口时选择「转换」类型,点击确认。
  • 第三步:双击打开脚本组件编辑器,切换到「输入列」页面,勾选Month_ID和Month_Sales,两个列的使用类型都设置为只读。
  • 第四步:切换到「输入和输出」页面,展开「输出0」节点,点击「添加列」按钮,新增列名称设为Growth,数据类型选择DT_R8(双精度浮点型,适合存储百分比类的小数)。
  • 第五步:切换到「脚本」页面,选择你习惯的开发语言(推荐C#),点击「编辑脚本」进入代码编辑界面。

你需要在脚本类中定义一个全局变量存储上一个月的销售额,初始值设为可空类型适配第一个月无值的场景,逐行处理数据时先判断是否存在上月销售额,存在则按公式计算环比,不存在则直接设为null,每一行处理完成后更新上月销售额为当前行的销售额即可。

C#参考代码如下:

public class ScriptMain : UserComponent
{
    // 全局变量存储上月销售额,可空类型适配第一个月无值的场景
    double? prevMonthSales = null;

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        // 存在上月销售额且上月销售额不为0时才计算,避免除以0报错
        if (prevMonthSales.HasValue && prevMonthSales.Value != 0)
        {
            Row.Growth = (Row.MonthSales - prevMonthSales.Value) / prevMonthSales.Value;
        }
        else
        {
            // 第一个月或上月销售额为0时Growth设为空
            Row.Growth_IsNull = true;
        }
        // 更新上月销售额为当前月销售额,供下一行计算使用
        prevMonthSales = Row.MonthSales;
    }
}

注意:如果你的输入列名称带下划线,脚本中会自动转换为驼峰命名,比如Month_Sales会变成MonthSales,如果和你实际的列名不一致请自行调整代码中的字段名。

  • 第六步:保存脚本关闭代码编辑窗口,点击确认保存脚本组件的所有配置。
  • 第七步:在脚本组件下游添加目标组件,将包含Growth列的结果写入目标表即可,最终计算结果如下:
Month_IDMonth_SalesGrowth
1500.0NULL
2250.0-0.5
3150.5~-0.398

内容的提问来源于stack exchange,提问作者Mahmud Mridul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:57:01