Parameter passing 如何将数组参数传递到ADF数据流中

Parameter passing 如何将数组参数传递到ADF数据流中,parameter-passing,azure-data-factory-2,azure-data-flow,Parameter Passing,Azure Data Factory 2,Azure Data Flow,我的ADF中有一个数据流,它接受int数组参数: 并在其中一个流活动中使用它: 但当我试图从管道中调用该数据流时,它似乎一点也不高兴:( 到目前为止,我已经尝试了3种不同的版本: 传递定义为硬编码表达式的空数组: 传递具有定义为硬编码表达式的值的数组: 从管道中传入一个数组变量:(请参见上面链接的图片中我是如何传递evaluationdateid) 无论我用哪种方式尝试,我都会从数据流中得到相同的错误,即缺少参数。 数据流调用日志显示参数已传递,但: 我做错了什么? 编辑: 我尝试

我的ADF中有一个数据流,它接受int数组参数:

并在其中一个流活动中使用它:

但当我试图从管道中调用该数据流时,它似乎一点也不高兴:(

到目前为止,我已经尝试了3种不同的版本:

  • 传递定义为硬编码表达式的空数组:
  • 传递具有定义为硬编码表达式的值的数组:
  • 从管道中传入一个数组变量:(请参见上面链接的图片中我是如何传递
    evaluationdateid
无论我用哪种方式尝试,我都会从数据流中得到相同的错误,即缺少参数。

数据流调用日志显示参数已传递,但:

我做错了什么?


编辑:
我尝试了另一件事:我在DF上设置了一个默认参数,使用硬编码值,然后重新创建DF调用。它用这些默认值自动填充参数,并且运行良好。但是当我将调用修改为一对不同的数字时(只是更改了数字,所以在语法上是相同的)事实证明,它忽略了输入,只是继续使用默认值。

此时,我确信(目前)ADF中的此功能存在缺陷

将管道解析数组传递到数据流中不起作用。数据流的行为将如同没有从管道传递任何值一样,并且如果配置了参数,则会出错或使用默认值

可以使用“表达式”模式传递数据。将管道中的参数配置为传递“字符串”,该字符串是数据流表达式语言表达式,用于定义数组

例如,传递:
array(123234)
将起作用。 (但请注意,开头没有
@
,我们不希望管道尝试计算表达式!)

因此,如果管道中有一个数组变量,可以通过构建用数据流表达式术语定义整个数组的字符串并将其传入,将其传递给数据流

看起来有点像这样:

array(@{join(variables('myVariable'),',')})

注意中间的<代码> @ {} /代码>,这会导致中心位由流水线解决,导致这样的字符串:


array(val1,val2,val3)
其中
val1
等是
myVariable
数组中最初的值。

管道参数是什么样子的?当前的解决方法是将管道参数设置为字符串标量,并将其设置为:[val1,val2,val3]

将数据流参数设置为数组:字符串[]


然后将字符串转换为数据流公式中的整数。

交叉发布到Microsoft Q&A论坛,以防它只是一个ADF错误:数组(@{join(variables('myVariable'),','))抛出异常“文字表达式中不允许列操作数”,因此增强了上述建议,并尝试使用['{join(split(variables('myVariable'),'),'))进行['@{join(split variables('myVariable'),'),')),'','''''''}']的字符串数组参数,它工作了。:)这很有趣。。。使用方括号显然对我不起作用,但马克下面的回答也表明了这一点。也许这里有一个字符串和int的差异?
{
"StatusCode": "DFExecutorUserError",
"Message": "Job failed due to reason: at Filter 'IdentifyTradesToDelete'Parameter 'TradeIdentityIds'(Line 35/Col 22): Parameter value for TradeIdentityIds missing",
"Details": "at Filter 'IdentifyTradesToDelete'Parameter 'TradeIdentityIds'(Line 35/Col 22): Parameter value for TradeIdentityIds missing"
}