如何在ADF的ForEach活动中传递文件名至待执行管道?
解决方案步骤
1. 给子管道定义文件名参数
- 打开需要调用的子管道,进入「参数」选项卡,添加一个字符串类型的参数,例如命名为
FileName。
2. 在子管道的复制数据活动中引用参数
- 子管道内的复制数据活动,无论是SFTP源还是Blob目标,需要指定文件名的位置直接引用该参数:
- 源数据集的文件名配置为
@pipeline().parameters.FileName - 目标Blob的文件名同样用该表达式引用,保证文件对应关系正确。
- 源数据集的文件名配置为
3. 在ForEach活动中传递文件名到子管道
- 返回主管道的ForEach活动内部,添加「执行管道」活动并选择目标子管道。
- 在「参数」配置区域,将
FileName参数的值设为@item().name(前提是ForEach的遍历项来自Get Metadata活动的childItems,每个item的name字段对应SFTP上的文件名)。
补充:确保遍历项包含文件名信息
- 若主管道用Get Metadata活动获取SFTP文件列表,需确认其「字段列表」勾选了
Child items,这样返回的childItems集合中每个对象都会携带name属性,才能通过@item().name提取文件名。
关键说明
- 无需给复制数据活动添加自定义参数,ADF的设计逻辑是通过子管道参数承接外部传入的值,再让复制活动绑定子管道参数来实现动态文件名的传递,这是官方推荐的标准实现方式。
- 若遍历项来自其他数据源,只需将
@item().name替换为对应数据结构中的文件名字段路径即可。
内容的提问来源于stack exchange,提问作者Codernator
相关产品推荐
相关产品推荐

