You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

关键修正说明

  1. 资源标识符修正
    把原代码中的区域URIhttps://uksouth.asazure.windows.net替换为全局资源标识符https://analysis.azure.com/,这是Azure Analysis Services服务的标准令牌请求目标,错误的URI会导致获取的令牌权限无效。

  2. 请求体格式修正
    API要求请求体必须包含refreshType字段和objects数组:

    • refreshType指定刷新类型(如Full、Incremental)
    • objects数组明确要刷新的对象(示例中是整个数据库,也可指定具体表)
      原代码仅写Type字段的格式不被API识别。
  3. 权限补充验证
    确保DefaultAzureCredential对应的身份(本地开发账户/服务主体)拥有Azure Analysis Services的模型管理员或数据刷新者权限,否则即使请求格式正确,仍会触发权限类错误。

内容的提问来源于stack exchange,提问作者Muhammad Pathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:08:28