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

Azure Synapse pipeline单活动如何按行条件路由至多sink?

Azure Synapse Pipeline 单活动按行条件分发多目标实现方案

你当前为每个区域单独创建Copy Activity、通过where子句筛选后写入对应文件的实现,会对同一份源CSV文件产生多次重复读取,不仅活动配置冗余,后续新增区域时还需要手动追加新活动,维护成本和执行开销都很高。
完全可以通过单个Copy Activity的原生多sink路由能力实现需求,不需要重复读取源数据,单次扫描即可逐行匹配区域字段值分发到对应目标文件,配置步骤如下:

  • 源端配置
    源数据集直接指向containerA/file1.csv,移除所有针对区域字段的筛选条件,保持全量数据单次读取即可。如果后续要适配多源文件,可把容器、文件路径配置为数据集参数,提升复用性。
  • 多sink路由配置(核心步骤)
    1. 进入Copy Activity的Sink设置页,将Sink类型从默认的单sink切换为Multiple sinks模式
    2. 为每个目标区域文件新增对应的sink条目:所有sink统一指向containerB,可提前将目标数据集的文件名做参数化设计,通过传入区域值动态映射到file2{区域标识}.csv的路径,不需要为每个区域单独建数据集
    3. 为每个sink配置独立的写入判断条件:在每个sink条目的Sink write condition配置项中,填写对应区域的逐行匹配规则,例如美国区域sink的条件填@equals(item().Region, 'US'),印度区域sink的条件填@equals(item().Region, 'IND'),Copy Activity会在读取每一行数据时自动匹配条件,将符合条件的行写入对应sink
    4. 可选配置:新增一个兜底sink,将不匹配任何预设区域值的异常行写入file2_unknown_region.csv,避免脏数据漏处理
  • 优化提示
    该方案仅对源文件执行一次IO读取,相比多活动重复扫描的实现,大文件场景下执行效率可提升数倍,执行成本也同步降低。后续新增区域时,不需要新增Copy Activity,只要在多sink列表中追加对应sink条目、传入区域参数、配置匹配规则即可;如果区域列表是动态变化的,还可以把区域清单配置为管道参数或者外部配置表,动态生成sink配置,完全不需要修改管道核心逻辑就能适配新区域。

注意:该多sink条件路由是Copy Activity的原生能力,不需要额外引入数据流或者自定义脚本活动,配置门槛低,性能表现优于自定义代码实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:34:02