如何在ADF管道中为GraphQL查询传参至Azure Synapse专用SQL池?
解决ADF Copy活动调用带参数GraphQL API的无效JSON错误问题
核心问题原因
ADF中直接使用带换行的GraphQL查询作为请求体,或者参数绑定方式不符合JSON格式要求,导致触发"无效JSON"错误。
具体解决步骤
1. 配置ADF管道参数
在ADF管道中创建对应参数,比如命名为createdAtParam,数据类型选择字符串(匹配API要求的DateTimeString类型)。
2. 构造标准的GraphQL请求体
在Copy活动的REST源设置中,将请求方法设为POST,并按以下格式构造请求体(使用ADF动态内容绑定参数):
{ "query": "query( $createdAt: DateTimeString ){ Trans( last: 10, filter: { CreatedAt_gte: $createdAt } ) { pageInfo { hasPreviousPage hasNextPage } edges { cursor node { invNumber subledgerId CreatedAt ModifiedAt } } } }", "variables": { "createdAt": "@pipeline().parameters.createdAtParam" } }
- 注意:将GraphQL查询转为单行字符串,避免JSON中出现未转义的换行符。如果需要保留查询格式,需将换行转义为
\n,示例如下:{ "query": "query( $createdAt: DateTimeString ){\n Trans( last: 10, filter: { CreatedAt_gte: $createdAt } ) {\n pageInfo {\n hasPreviousPage\n hasNextPage\n }\n edges {\n cursor\n node {\n invNumber\n subledgerId\n CreatedAt\n ModifiedAt\n }\n }\n }\n}", "variables": { "createdAt": "@pipeline().parameters.createdAtParam" } }
3. 验证请求格式
- 进入ADF调试模式,运行管道后查看Copy活动的请求体预览,确认参数已正确替换,且整个JSON结构合法。
- 可将预览的JSON内容复制到JSON校验工具(如ADF内置的JSON编辑器),检查是否存在格式错误。
4. 额外注意事项
- 确保
createdAtParam的参数值符合API要求的时间格式,例如2024-01-01T00:00:00Z。 - 确认API的身份验证配置(如Bearer Token)已正确添加到Copy活动的源设置中。
内容的提问来源于stack exchange,提问作者Sandeep T
相关产品推荐
相关产品推荐

