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

如何在SSIS包中为ID与PropertyID重复的记录添加增量编号

这是个在SSIS里很常见的需求,我给你两种实用的实现方案,你可以根据数据源类型来选:

方案1:直接在SQL数据源中处理(推荐,如果数据来自数据库)

如果你的源数据来自关系型数据库(比如SQL Server),最简便高效的方式是在查询源数据时直接用窗口函数生成RID,不需要在SSIS数据流里额外处理。

你可以用ROW_NUMBER()函数,按ID和PropertyID分区,再按你需要的顺序(比如例子里的Value)排序,就能自动生成递增的RID:

SELECT 
    ID,
    Name,
    PropertyID,
    Value,
    -- 按ID+PropertyID分组,每组内按Value排序生成序号
    ROW_NUMBER() OVER (PARTITION BY ID, PropertyID ORDER BY Value) AS RID
FROM YourSourceTable

这样查询出来的结果直接就是你想要的格式,后续在SSIS里直接用这个结果集就行。

方案2:用SSIS脚本组件处理(适用于非数据库数据源)

如果你的数据来自Excel、CSV这类非数据库源,或者必须在SSIS数据流中处理,那可以用脚本组件来实现:

  1. 在Data Flow任务里,把Merge Join的输出连接到一个脚本组件(选择「转换」类型)
  2. 打开脚本编辑器,在「输入列」里勾选ID、PropertyID、Value这些需要用到的列
  3. 在「输出列」里添加一个新列,命名为RID,数据类型选择int
  4. 切换到「脚本」选项卡,点击「编辑脚本」,用C#编写以下逻辑:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Collections.Generic;
using System.Tuple;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    // 存储每个(ID, PropertyID)组合的当前计数
    private Dictionary<Tuple<int, int>, int> _ridCounter = new Dictionary<Tuple<int, int>, int>();

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        // 创建当前行的分组键
        var groupKey = Tuple.Create(Row.ID, Row.PropertyID);
        
        // 更新计数:如果是该分组的第一条记录,初始化为1;否则计数+1
        if (!_ridCounter.ContainsKey(groupKey))
        {
            _ridCounter[groupKey] = 1;
        }
        else
        {
            _ridCounter[groupKey]++;
        }
        
        // 给RID列赋值
        Row.RID = _ridCounter[groupKey];
    }

    // 处理完一批数据后清空字典,避免内存占用过高
    public override void PostExecute()
    {
        base.PostExecute();
        _ridCounter.Clear();
    }
}

注意事项:

  • 如果需要RID的顺序和你例子里完全一致(比如按Value从小到大排序),建议在Merge Join之后先添加一个排序组件,按ID、PropertyID、Value排序,再进入脚本组件。
  • 脚本组件里的字典会在数据流运行期间保持状态,PostExecute方法里清空字典是为了避免处理大量数据时内存泄漏。

内容的提问来源于stack exchange,提问作者Ranjith Varatharajan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:21:01