如何通过参数传入表达式

how to pass in an expression through a parameter

假设我在管道内有一个 foreach

我想遍历以下内容:

@split(split(item().name,'_')[4],'-')[1]

不过,我想通过参数传入这个公式。

我在管道中定义了一个具有所需值的参数 myExpression,并尝试像这样引用它:

请注意,完整的表达式为:{@pipeline().parameters.myExpression}

但是,数据工厂不会执行该表达式,而只是将其作为逐字字符串接受:

{@pipeline().parameters.myExpression}

我们如何从管道中的参数传递表达式?

你的描述缺乏很多关于你想做什么的背景。我只能假定您在一个管道中生成数组,而您想在另一个管道中迭代它。查看您的打印屏幕,您似乎输入了您的值,因此输出是纯文本。你应该点击动态上下文

所以它看起来像这样:

当您定义这样的参数并传递值时,您所做的是发送一个字符串输入,因为文本框不接受表达式。将表达式传递给参数的唯一方法是从另一个管道传递它。我们遇到的另一个问题是一个 ADF 限制 - 不能嵌套迭代。调用第二个管道可以解决这两个问题。

将您的流程分成两条管道。

第一个(父)管道 - 保持所有步骤,直到生成必须在其上进行迭代的数组。

@split(split(item().name,'_')[4],'-')[1]

然后,在 for each 循环中,调用 "Execute pipeline" activity。在那里,以类似的方式传递你想要的表达 -

在子管道中,定义一个字符串参数来吸收传入的值。然后,使用 @pipeline().parameters.ParamName 在那里使用它。

HTH