Azure Data Factory Foreach活动表达式解析失败求助
Azure Data Factory Foreach活动Items表达式运行时解析失败问题排查
问题场景
在Azure Data Factory的管道中配置了Foreach活动,为其Items属性编写了表达式,逻辑是检查GetReplies活动是否生成数据集:有数据则返回该数据集,无数据则返回空数组。表达式如下:
@if(not(empty(activity('GetReplies').output.resultSets)), activity('GetReplies').output.resultSets[0].rows, array([]))
表达式在构建器里没有语法错误,管道能正常保存、验证和发布,但运行时触发**"Unable to parse"**错误。哪怕简化成@array([]),同样报解析失败。
问题原因
Foreach活动的Items要求必须是一维数组,而array([])生成的是二维空数组(数组里嵌套了另一个空数组),ADF运行时没法把二维数组解析成可迭代的一维集合,所以触发了解析错误。
解决方案
把返回的空数组改成一维空数组,用createArray()函数,或者给array()传空参数(不要嵌套数组):
修正后的表达式
@if(not(empty(activity('GetReplies').output.resultSets)), activity('GetReplies').output.resultSets[0].rows, createArray())
或者等价写法:
@if(not(empty(activity('GetReplies').output.resultSets)), activity('GetReplies').output.resultSets[0].rows, array())
验证说明
createArray()或者无参数的array()生成的是一维空数组[],完全符合Foreach活动对Items的迭代要求- 当
GetReplies活动有返回结果时,resultSets[0].rows本身就是一维数组(每行数据作为一个元素),可以正常被Foreach迭代
内容的提问来源于stack exchange,提问作者jeancallisti
相关产品推荐
相关产品推荐

