调用Azure Analysis Services REST API刷新模型遇400错误,求正确格式
解决Azure Analysis Services异步刷新API 400错误的正确请求格式
问题核心原因
你遇到的400错误(响应含Unauthorized提示),主要源于两个关键问题:
- 令牌请求的资源标识符不正确
- 请求体格式不符合API规范
修正后的完整代码
import requests from azure.identity import DefaultAzureCredential # API请求URL(保持原地址不变) url = "https://uksouth.asazure.windows.net/servers/myserver/models/mymodel/refreshes" # Azure Analysis Services的正确资源标识符 resource_uri = "https://analysis.azure.com/" credential = DefaultAzureCredential() token = credential.get_token(resource_uri) access_token = token.token # 请求头配置 headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" } # 符合API要求的全量刷新请求体 body = { "refreshType": "Full", "objects": [ { "database": "mymodel" } ] } try: response = requests.post(url, headers=headers, json=body) response.raise_for_status() print("模型刷新已成功触发") print(f"刷新操作ID: {response.json().get('id')}") except Exception as e: print(f"触发模型刷新失败: {e}") if response.content: print(f"响应详情: {response.text}") raise e
关键修正说明
资源标识符修正
把原代码中的区域URIhttps://uksouth.asazure.windows.net替换为全局资源标识符https://analysis.azure.com/,这是Azure Analysis Services服务的标准令牌请求目标,错误的URI会导致获取的令牌权限无效。请求体格式修正
API要求请求体必须包含refreshType字段和objects数组:refreshType指定刷新类型(如Full、Incremental)objects数组明确要刷新的对象(示例中是整个数据库,也可指定具体表)
原代码仅写Type字段的格式不被API识别。
权限补充验证
确保DefaultAzureCredential对应的身份(本地开发账户/服务主体)拥有Azure Analysis Services的模型管理员或数据刷新者权限,否则即使请求格式正确,仍会触发权限类错误。
内容的提问来源于stack exchange,提问作者Muhammad Pathan
相关产品推荐
相关产品推荐

