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

SSIS中如何将条件拆分输出的NTE记录合同号映射到ITM记录

SSIS实现NTE合同号映射到ITM行的方法

针对你遇到的问题,这里提供三种可行的实现方案,按需选择:

方案一:变量存储+脚本组件赋值

  1. 在SSIS包的变量面板中创建字符串类型变量var_ContractNumber,初始值设为空。
  2. 数据流任务中,在Conditional Split前添加一个脚本组件(转换):
    • 输入列勾选Recordtype和contractnumber
    • 在脚本编辑界面,将var_ContractNumber设置为ReadWriteVariables
    • 编写C#脚本捕获NTE的合同号:
      public override void Input0_ProcessInputRow(Input0Buffer Row)
      {
          if (Row.Recordtype == "NTE")
          {
              this.Variables.var_ContractNumber = Row.contractnumber;
          }
      }
      
  3. 配置Conditional Split,按Recordtype == "NTE"和Recordtype == "ITM"拆分数据流。
  4. 给ITM分支添加另一个脚本组件(转换):
    • 输入列勾选contractnumber
    • 将var_ContractNumber设置为ReadOnlyVariables
    • 编写脚本替换空值:
      public override void Input0_ProcessInputRow(Input0Buffer Row)
      {
          if (string.IsNullOrEmpty(Row.contractnumber))
          {
              Row.contractnumber = this.Variables.var_ContractNumber;
          }
      }
      
  5. 将两个分支分别写入对应目标文件。

方案二:缓存转换+查找替换

  1. 用Conditional Split先拆分出NTE分支,接入缓存转换,配置缓存存储contractnumber字段。
  2. 对ITM分支添加查找转换,连接到上述缓存:
    • 设置查找条件为固定匹配(如1=1,因仅一条NTE记录)
    • 将ITM的contractnumber列替换为缓存中的NTE合同号
  3. 处理后的ITM数据写入目标文件,NTE分支直接写入对应文件。

方案三:合并连接关联数据

  1. 拆分NTE和ITM分支后,分别给两个分支添加排序转换,按Recordtype排序(Merge Join要求输入已排序)。
  2. 添加Merge Join组件:
    • 将NTE设为左输入,ITM设为右输入
    • 连接条件设为1=1(确保唯一关联)
    • 输出时选择ITM的所有列,并用NTE的contractnumber覆盖ITM的空值
  3. 分别将合并后的ITM数据、原NTE数据写入对应目标文件。

内容的提问来源于stack exchange,提问作者Krishna Shitole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:33:24