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

如何在SSIS中合并SQL Server重复Return ID的Item Quantity数据

问题场景

当前使用SSIS将退货客户数据从CSV导入SQL Server表[PowerBIXPO].[dbo].[ReturnHeader],表涉及字段如下:

SELECT [Order Number]
      ,[Date]
      ,[Name]
      ,[Email]
      ,[Return ID]
      ,[Createddateandtime]
      ,[Item Quantity]
FROM [PowerBIXPO].[dbo].[ReturnHeader]

导入流程可正常执行,但源CSV中相同Return ID的数据会被插入为新行,无法自动合并并汇总Item Quantity。需求为:在插入SQL Server表前,通过SSIS完成数据合并。


解决方案1:用SSIS聚合转换直接合并CSV内重复数据

适用于仅需合并CSV中重复Return ID,且目标表中无对应数据的场景:

  • 在SSIS数据流任务中添加平面文件源,读取CSV数据
  • 添加聚合转换并连接到平面文件源,打开转换编辑器:
    1. 将Return ID、Order Number、Date、Name、Email、Createddateandtime设置为分组依据(Group By)(注:同一Return ID下这些字段需保持一致,否则会被判定为不同分组)
    2. 将Item Quantity设置为求和(Sum),输出别名可设为Total Item Quantity
  • 添加OLE DB目标,连接到SQL Server的ReturnHeader表,将聚合后的字段与目标表字段逐一映射(确保Total Item Quantity对应目标表的Item Quantity)

解决方案2:用SSIS查找转换实现“新增插入+已有更新汇总”

适用于目标表已存在部分Return ID数据,需要同时处理新数据插入、旧数据累加汇总的场景:

  1. 数据流任务中添加平面文件源读取CSV数据
  2. 先通过聚合转换合并CSV内的重复Return ID(步骤同方案1)
  3. 添加查找转换,连接到SQL Server的ReturnHeader表,关联条件设为Return ID == Return ID,配置为全缓存模式,输出匹配到的已有数据的Item Quantity字段
  4. 添加派生列转换,计算汇总后的总数量:ISNULL(查找的Item Quantity, 0) + Total Item Quantity
  5. 添加OLE DB命令,编写MERGE语句实现更新或插入:
    MERGE INTO [PowerBIXPO].[dbo].[ReturnHeader] AS Target
    USING (
        SELECT 
            ? AS [Return ID], 
            ? AS [Order Number], 
            ? AS [Date], 
            ? AS [Name], 
            ? AS [Email], 
            ? AS [Createddateandtime], 
            ? AS [Total Item Quantity]
    ) AS Source
    ON Target.[Return ID] = Source.[Return ID]
    WHEN MATCHED THEN
        UPDATE SET Target.[Item Quantity] = Target.[Item Quantity] + Source.[Total Item Quantity]
    WHEN NOT MATCHED THEN
        INSERT (
            [Order Number], [Date], [Name], [Email], [Return ID], [Createddateandtime], [Item Quantity]
        ) VALUES (
            Source.[Order Number], Source.[Date], Source.[Name], Source.[Email], Source.[Return ID], Source.[Createddateandtime], Source.[Total Item Quantity]
        );
    
    (也可使用缓慢维度转换,将Return ID设为业务键,配置Item Quantity为累加更新属性)

注意事项

  • 确保CSV中同一Return ID对应的非聚合字段(如Order Number、Name等)值一致,否则聚合转换会生成多条分组记录
  • 若目标表已有历史重复Return ID数据,建议先清理后再执行上述SSIS流程
  • 聚合转换对内存有一定要求,若CSV数据量极大,可先导入临时表再用SQL聚合,但此方式不符合“插入前通过SSIS完成”的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:41:34