0

我使用 until 活动按顺序复制文件。为此,我创建了一个变量并赋值为 0,并将其与数据湖中可用的文件数进行比较。直到活动中使用的表达式检查变量值是否大于文件数,直到变量值大于文件数,循环执行。如果在数据湖中未找到文件,则变量值将设置为 1,文件数将为 0。但发生的情况是,即使变量的值为 1 且文件数为零,直到活动活动试图执行内部活动。有什么解决办法吗?用于设置变量值的条件activity:@equals(activity(lookup).output.firstrow.NumberOfFiles,

如果有任何建议,将非常有帮助

问候,桑迪普

4

2 回答 2

1

根据 Microsoft 文档,Until 活动提供的功能与编程语言中的 do-until 循环结构提供的功能相同。

它会先执行一次内部活动,然后根据表达式的结果来决定是循环还是中断。

因此,在您的情况下,您的内部活动将执行一次,然后获取true价值并打破 until 活动。

如果您不想执行一次,您可以使用另一个If Condition activity并且var1 = 1不要执行 util 活动。

于 2020-07-13T01:57:23.060 回答
0

如果在数据湖中找不到文件,则变量值将设置为 1,文件数将为 0。

直到活动中使用的表达式:@greater(int(variables('var1')),activity(lookup).output.firstrow.NumberOfFiles)

直到活动按预期工作。

直到活动中使用的表达式检查变量值是否大于文件数,直到变量值大于文件数,循环执行。

不幸的是,您对它如何工作的假设是不正确的。 直到循环将始终至少运行一次。在每次迭代结束时,它将测试其条件以查看它是否应该再次运行。 如您所述,它不会首先检查条件。

解决方法是使用 ForEach 活动而不是直到活动。ForEach 将始终运行您需要的次数,它使您不必通过变量操作来跟踪循环条件。

于 2020-08-20T17:03:17.147 回答