parameter-passing - 如何将数组参数传递到 ADF 数据流
问题描述
我的 ADF 中有一个 DataFlow,它接受一个 int 数组参数:
但是当我尝试从管道调用该数据流时,它似乎一点也不开心:(
到目前为止,我已经尝试了 3 个不同的版本:
- 传递一个定义为硬编码表达式的空数组:imageLink
- 传递一个包含值的数组,定义为硬编码表达式:imageLink
- 从管道中传入一个数组变量:(看看我是如何传入
ValuationDateIds
上面链接的图像的)
无论我尝试哪种方式,我都会从数据流中得到相同的错误,说参数丢失。
{
"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"
}
数据流调用日志显示参数已传递,但:
我究竟做错了什么?
编辑:我尝试了另一件事:我在 DF 上设置了一个默认参数,使用硬编码值,然后重新创建了 DF 调用。它使用这些默认值自动填充参数,并且运行良好。但是,当我将调用修改为一对不同的数字(只是更改了数字,因此在语法上相同)时,结果证明它忽略了输入并继续使用默认值。
解决方案
在这一点上,我相当确信 ADF 中的此功能(当前)存在错误。
将管道解析的数组传递到数据流中不起作用。数据流的行为就像没有从管道传入值一样,并且会出错,或者使用参数默认值(如果已配置)。
您可以使用“表达式”模式传递数据。配置管道中的参数以传入“字符串”,该“字符串”是用于定义数组的数据流表达式语言表达式。
例如,传递:array(123, 234)
将起作用。(但请注意,@
开头没有 an - 我们不希望管道尝试评估表达式!)
因此,如果管道中有一个数组变量,则可以将其传递给数据流,方法是构建以数据流表达式术语定义整个数组的字符串,然后将其传入。
看起来有点像这样:
array(@{join(variables('myVariable'), ',')})
请注意@{}
中间的导致中心位被管道解析,从而产生一个看起来像这样的字符串:
array(val1, val2, val3)
其中val1
等是最初在myVariable
数组中的值。
推荐阅读
- java - 对异常抛出和异常处理感到困惑
- python - 程序完成后如何保持值?
- angular - 滚动向下箭头时未突出显示 MatAutocomplete 选项
- javascript - 缓存从侦听器回调中获取的值
- pandas - 根据时间范围设置熊猫值
- entity-framework-core - 如何从代码优先迁移访问 UserManager?
- python-3.x - 我尝试在 Visual Studio 代码的终端中运行 python 文件,但它一直给我 synthax 错误
- r - filter_all 给了我相同的未过滤数据框
- python - 什么是 --use-feature=2020-resolver?在 ubuntu 上安装 jupyter 的错误消息
- javascript - How to hide the tick marks of the axis in react-chartjs-2