如何将参数从Data Factory传递到Azure Function?动态表达式报错排查
问题根因
你的表达式写法不符合Azure Data Factory(ADF)动态内容在JSON请求体中的解析规则:
- 直接将
@pipeline().parameters.param1裸写在JSON字段值的位置,没有做合法的字符串包裹或整体动态表达式声明,ADF无法将表达式的求值结果正确填充到JSON对应位置,最终传到Azure Functions的参数值为null。
正确写法
根据参数类型可以选择两种方案:
1. 参数均为字符串类型
直接把ADF动态表达式放在JSON字段值的双引号内部即可:
{"param1":"@pipeline().parameters.param1","param2":"@pipeline().parameters.param2"}
2. 参数包含非字符串类型(数字、布尔等)或存在特殊字符
更稳妥的方案是用concat函数整体构造JSON串,用@()包裹整个动态内容,ADF会自动完成表达式求值和JSON拼接:
@concat( '{"param1":', string(pipeline().parameters.param1), ',"param2":', string(pipeline().parameters.param2), '}' )
注意:如果是字符串类型的参数,需要在concat的拼接逻辑里手动给参数值前后加双引号,避免生成的JSON格式非法。
验证方法
你可以在ADF管道调试模式下,查看对应活动的输入Body详情,确认生成的JSON格式合法、参数值已被正确替换,再触发Azure Functions调用。
内容的提问来源于stack exchange,提问作者Fluxy
相关产品推荐
相关产品推荐

