Azure Data Factory:主管道向嵌套ForEach子管道传参问题
解决Blob行值与主管道数组值生成对应文件名的变量传递问题
主管道配置步骤
- 定义参数
p_dayArray,类型设为数组,用于传入如['1','2']这类目标后缀值 - 定义变量
currentDay,类型字符串,存储遍历到的单个数组元素 - 配置ForEach活动:
- 遍历对象设为
@p_dayArray - 内部添加Set Variable活动:将
@item()赋值给currentDay - 内部添加Execute Pipeline活动:调用子管道,传递参数
p_currentDay,值设为@variables('currentDay')
- 遍历对象设为
子管道配置步骤
- 定义参数
p_currentDay,类型字符串,接收主管道传来的单个后缀值 - 定义变量
currentBlobValue,类型字符串,存储Lookup读取到的单个Blob行值 - 配置Lookup活动:读取Blob中的行数据(如
a、b、c),确保输出为数组格式 - 配置ForEach活动:
- 遍历对象设为
@activity('Lookup').output.value - 内部添加Set Variable活动:将Blob行的对应列值赋值给
currentBlobValue(如Blob列名为content,则表达式为@item().content) - 内部添加Copy Data活动:
- 配置源与目标存储
- 目标文件名使用拼接表达式:
@concat(variables('currentBlobValue'), pipeline().parameters.p_currentDay)
- 遍历对象设为
关键错误修正
此前错误在于试图在子管道中直接接收并遍历主管道的数组dayArray,导致变量传递层级混乱。正确逻辑是主管道遍历数组,将单个元素逐一传给子管道;子管道遍历Blob行值,与接收的单个元素拼接生成文件名,完全规避数组在跨管道传递中的配置问题,同时简化变量逻辑。
内容的提问来源于stack exchange,提问作者Alex K
相关产品推荐
相关产品推荐

