如何在Azure数据工厂的ForEach活动中创建迭代范围变量

时间:2020-08-08 14:04:49

标签: azure-data-factory azure-data-factory-2

我有一个ForEach活动,在每次迭代中,我需要设置一些特定于迭代的变量。我可以通过使用为管道(管道作用域)定义的变量来实现这一点,但这迫使我以Sequential模式运行循环,因此并行运行的多次迭代不会更新相同的变量。我真正需要的是能够在每次迭代(迭代范围)内定义这些变量的功能,这样我就可以在并行模式下运行ForEach活动。

enter image description here

enter image description here

我已经考虑过创建一个SQL数据集,在其中可以查找假值(SELECT 1 AS var1,2 AS var2),只是为了获得可以设置和使用这些值的结构,但这似乎实在是me脚。我还考虑过将数组变量类型与AppendVariable选项一起使用,但这会引入很多自定义解析。

如果我可以拥有一个不必绑定到数据源的InMemory数据集,那儿可以将其用作ForEach迭代中的结构,那将是很好的。还有人对如何在ForEach循环内设置迭代特定变量有其他想法吗?

2 个答案:

答案 0 :(得分:1)

我同意,这很烦人也很烦人。

如果 Jason 回答的第一部分适用于您的情况,那么这绝对是要走的路。 (定义循环外的变量)。

但假设变量是每次迭代动态计算的,那么我知道的唯一解决方案是将 Foreach 循环的主体定义为它自己的管道。现在您可以在该内部管道内定义变量,这些变量“作用域”到内部管道的单独执行。

很多 ADF 的管道限制都可以这样规避。嵌套的 Ifs/Foreaches、活动限制等

答案 1 :(得分:0)

关于当前执行此操作的最佳方法是,它可以从外部查找中提取值或获取元数据活动(如果可以)。使用内部查找不会具有成本效益或性能效益。特别是如果您要迭代100或数千。当然,这是您可以提前确定每次迭代的值。如果不能。我将竭力寻求您的查找方法。或者,如果您完全可以摆脱这些变量,只需使用具有动态属性的表达式即可设置值。