Azure Data Factory Until活动布尔表达式转换报错咨询
解决方案
错误原因分析
报错function bool doesn't accept the 0 arguments是因为你错误使用了bool()函数的语法:你写成了bool()(xxx)的形式,相当于先调用无参数的bool函数,再把目标值作为参数传给返回结果,这不符合Azure Data Factory(ADF)的表达式规则。bool()函数需要直接接收一个参数(字符串、数字等)来完成类型转换。
具体修复步骤
1. 修正Until活动的结束判断表达式
原错误表达式:
@bool()(variables('Fileavilable '))
改为正确的参数传递形式:
@bool(variables('Fileavilable '))
或者更直观的字符串比较写法(因为变量是字符串类型的"true"/"false"):
@equals(variables('Fileavilable '), 'True')
2. 修正If Condition活动的判断表达式
注意activity('Get Metadata1').output.exists本身就是布尔类型,完全不需要额外转换,直接使用即可:
@activity('Get Metadata1').output.exists
如果出于兼容需求一定要用bool转换,正确写法是:
@bool(activity('Get Metadata1').output.exists)
3. 变量定义优化(可选但推荐)
- 变量名
Fileavilable末尾有多余空格,容易引发意外问题,建议改为FileAvailable(同时修正拼写错误:avilable→available) - 把变量类型直接设为Boolean,默认值设为
false,这样可以彻底省去字符串转布尔的步骤,表达式更简洁:
对应的Until表达式可简化为:"variables": { "FileAvailable": { "type": "Boolean", "defaultValue": false } }
Set Variable活动的@variables('FileAvailable')value直接设为布尔值true(不需要加引号)。
修复后的关键配置片段示例
Until活动表达式
"expression": { "value": "@bool(variables('Fileavilable '))", "type": "Expression" }
If Condition活动表达式
"expression": { "value": "@activity('Get Metadata1').output.exists", "type": "Expression" }
内容的提问来源于stack exchange,提问作者Rohit Sachdeva
相关产品推荐
相关产品推荐

