Azure Synapse queryPipelineRuns API带过滤器POST返回空数组问题
解决Azure Synapse queryPipelineRuns API过滤返回空数组问题
排查方向及修复方案
校验时间参数的有效性
lastUpdatedAfter必须使用UTC标准时间戳,格式严格遵循ISO 8601。如果你的管道运行更新时间早于该时间,接口会返回空数组。建议先扩大时间范围测试,比如将时间改为2024-06-01T00:00:00.000Z,确认是否有数据返回。同时可以搭配lastUpdatedBefore参数缩小范围,避免时间区间不合理。确保过滤器参数完全匹配
- 若使用
status参数,必须使用Synapse官方定义的枚举值:Succeeded、Failed、Cancelled、InProgress,大小写不能出错。 - 使用
pipelineName时,要和管道的实际名称完全一致,包括大小写、特殊字符,不能有拼写错误。
- 若使用
检查请求体结构
过滤参数需作为请求体的顶级字段,不能嵌套。正确的请求体示例:{ "lastUpdatedAfter": "2024-06-01T00:00:00.000Z", "lastUpdatedBefore": "2024-06-20T23:59:59.999Z", "status": "Succeeded", "pipelineName": "YourActualPipelineName" }验证MSI权限细节
虽然空请求能返回数据,但带过滤条件的请求可能需要更精细的权限确认。确保MSI拥有Synapse Artifacts Contributor或更高权限,能够读取管道运行的完整元数据。绕过集成运行时直接测试
用Postman或curl直接调用API,传入相同过滤参数,验证是否返回数据。如果直接调用正常,问题可能出在AutoResolveIntegrationRuntime的配置上。示例curl命令:curl --request POST 'https://WorkspaceName.dev.azuresynapse.net/queryPipelineRuns?api-version=2020-12-01' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <MSI_ACCESS_TOKEN>' \ --data '{ "lastUpdatedAfter": "2024-06-01T00:00:00.000Z" }'
内容的提问来源于stack exchange,提问作者Su1tan
相关产品推荐
相关产品推荐

