如何通过参数传入表达式
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
假设我在管道内有一个 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