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

如何在Azure Data Factory管道中将Filter活动输出用作Copy活动源

解决方法(无需Data Flow)

根据你的场景,Copy活动无法直接接收Filter输出的数组作为源,你可以通过以下两种方案实现,按需选择:

方案1:适合小数据量(逐条插入)

直接用Foreach活动结合Copy活动实现批量插入:

  • 配置Foreach活动的Items为@activity('Filter1').output.Value
  • 在Foreach内部添加Copy活动:
    • 源:选择Inline数据集,类型选JSON,内容填写@item()
    • 接收器:配置你的SQL Server数据集,写入模式选择Append
  • 注意:如果数据量较大,可开启Foreach的Parallel execution(默认并行,最多20并发)提升插入效率

方案2:适合大数据量(临时文件中转)

通过临时存储中转过滤后的数据,再批量写入SQL Server:

  1. 创建临时存储:用Azure Blob Storage(或ADLS Gen2)创建一个临时容器,用于存放过滤后的JSON文件
  2. 添加变量:创建一个字符串类型的变量(比如filteredJsonStr)
  3. Set Variable活动:将Filter的输出数组转为JSON字符串,表达式:
    @string(activity('Filter1').output.Value)
    
  4. 第一个Copy活动(写入临时文件):
    • 源:选择Inline数据集,类型选JSON,内容填写@variables('filteredJsonStr')
    • 接收器:选择你的Blob数据集,指定临时文件路径(比如temp/filtered_data.json)
  5. 第二个Copy活动(写入SQL Server):
    • 源:选择刚才的Blob数据集,指向临时JSON文件
    • 接收器:配置你的SQL Server数据集,设置好表字段映射,写入模式选Append或Upsert(根据需求)
  6. (可选)Delete活动:在最后删除临时Blob文件,避免存储冗余

关键注意点

  • Lookup活动默认最多返回5000条记录,如果你的CSV数据超过这个数量,需要在Lookup活动的设置里修改Maximum rows count(最大可设为100000)
  • 用临时文件中转时,确保Blob容器的权限配置正确,ADF具备读写权限
  • 如果用Foreach方案,SQL Server的表要允许批量插入,避免单条插入导致性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:50:00