Azure Synapse:Lookup返回file_count为0时调用管道报错的问题咨询
解决Lookup活动结果为空时的报错问题
问题原因
当Lookup查询返回空结果集(比如没有匹配到有效文件时),活动输出里不会存在firstRow属性,后续逻辑直接引用该属性就会触发报错;而当file_count大于0时查询有返回行,firstRow存在,所以运行正常。
解决方案
两种常用处理方式,选其一即可:
方式1:允许Lookup返回空结果,调整条件判断
- 打开Lookup活动的设置面板,勾选Allow no rows选项。这样即使查询无返回行,Lookup也不会报错,而是输出count为0的空结果。
- 在后续条件分支(比如If Condition活动)中,用以下表达式判断是否调用管道:
该表达式会先检查结果集行数,为空时直接返回@if(equals(activity('你的Lookup活动名称').output.count, 0), false, greater(activity('你的Lookup活动名称').output.firstRow.file_count, 0))false(不执行后续管道);有结果时再判断file_count是否大于0。
方式2:修改SQL查询,确保始终返回一行数据
- 将原查询语句修改为:
借助SELECT COALESCE(SUM(file_count), 0) AS file_count FROM tableCOALESCE函数,即使没有有效文件,也会返回一行file_count=0的结果。此时Lookup活动始终存在firstRow属性,后续直接用以下表达式判断即可:@greater(activity('你的Lookup活动名称').output.firstRow.file_count, 0)
内容的提问来源于stack exchange,提问作者Shweta Reddy
相关产品推荐
相关产品推荐

