Azure 数据工厂中用于增量加载的并行 ForEach 循环中的变量分配问题

问题描述 投票:0回答:1

我在 Azure 数据工厂的 ForEach 循环内声明了变量,并且它们是按顺序分配的。这些变量中存储的值用于增量加载,特别是存储水印值以跟踪数据更改。

当我顺序运行循环时,变量分配按预期工作。但是,当我切换到并行运行循环时,变量分配的行为不符合预期。由于并行执行,变量似乎收到了不正确的值。

有人在 Azure 数据工厂中的并行 ForEach 循环中使用变量时遇到过类似的问题吗?即使循环并行运行,如何确保为变量分配正确的值?

  1. 验证变量在循环内是否正确声明和初始化。
  2. 确保循环设置为并行运行。
  3. 检查变量如何用于增量加载的逻辑。

任何建议或见解将不胜感激!

foreach azure-data-factory parallel-execution
1个回答
0
投票

即使循环并行运行,如何确保为变量分配正确的值?

在并行执行中,迭代不依赖于每次迭代,并且每次迭代都不会等到前一次迭代完成。

您可以通过以下演示来更好地理解。

首先,我声明了一个数组变量

arr
并给出了像
[1,2,3,4]
这样的值。我已将此数组赋予 for-each 活动并设置并行执行。

enter image description here

在循环内,我使用了附加变量活动将每个项目值附加到数组

test
,并且我在 for-each 活动之后显示了该数组。每次迭代都会从给定的数组中获取值并随机完成。

可以看到for循环后的结果数组的顺序与第一个数组不同。

enter image description here

在此,迭代顺序不是固定的,而是随机的。这与您得到上述结果的原因相同。

在增量加载的情况下,当前迭代取决于前一个迭代的值或固定的迭代顺序,for-each 活动的并行执行将不起作用。在这种情况下,您需要以顺序方式执行 for-each 活动。当迭代或这些迭代的结果彼此独立时,可以使用并行执行。

在同一个示例中,当以顺序方式执行循环时,它将给出预期的结果。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.