Terraform部署ADF管道:循环中无数组变量追加字符串方法
解决方案
核心问题原因
你之前用concat只保留最后一次迭代值,是因为ADF的For Each循环默认并行执行(并行度默认5),所有迭代同时读取字符串变量的初始值,各自拼接后写回变量,最终最后完成的迭代会覆盖之前的结果。
具体实现步骤
- 创建管道级字符串变量:新增一个字符串类型变量(比如命名为
finalCombinedStr),初始值设为空字符串。 - 调整For Each循环并行度:将For Each的并行度设置为
1,强制迭代串行执行,确保每次拼接都基于上一次更新后的变量值。 - 循环内拼接逻辑:
- 先通过Set Variable活动生成当前迭代对应的
dynamicbody字符串。 - 紧接着添加另一个Set Variable活动,对
finalCombinedStr进行赋值,使用带判断的拼接表达式避免多余分隔符:
这里的if(length(variables('finalCombinedStr')) == 0, variables('dynamicbody'), concat(variables('finalCombinedStr'), ',', variables('dynamicbody'))),可以替换成你需要的分隔符(比如换行符'\n')。
- 先通过Set Variable活动生成当前迭代对应的
验证逻辑
串行执行后,每次迭代都会先读取上一次迭代更新后的finalCombinedStr,再拼接当前的dynamicbody,最终变量会累积所有迭代的字符串内容。
内容的提问来源于stack exchange,提问作者Rahi Jangle
相关产品推荐
相关产品推荐

