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

使用pyadomd刷新Azure Analysis Services模型时遇命名空间错误

解决Azure Analysis Services XMLA刷新命令命名空间错误问题

问题核心原因

Pyadomd的cursor.execute()方法会自动将传入的XMLA命令封装到<Envelope><Body><Execute><Command>结构中,手动添加SOAP信封或错误的命令层级会导致命名空间冲突;同时针对Azure AS的tabular模型,刷新命令的结构需要匹配服务要求的格式。

正确解决方案

  1. 移除手动添加的SOAP信封,只保留核心XMLA命令内容
  2. 使用Batch命令包裹Refresh操作(Azure AS推荐的刷新方式,支持批量操作)
  3. 使用与Azure AS版本匹配的命名空间,推荐用http://schemas.microsoft.com/analysisservices/2012/engine/200(适配大多数现代Azure AS实例)

修改后的完整代码

from sys import path
from azure.identity import DefaultAzureCredential

# 添加ADOMD.NET库路径
path.append('\\Program Files\\Microsoft.NET\\ADOMD.NET\\150')

from pyadomd import Pyadomd

# 配置信息
database_name = 'database_name'
data_source_suffix = 'data_source_suffix'
resource_uri = "https://uksouth.asazure.windows.net"
model_name = 'model_name'

# 获取访问令牌
credential = DefaultAzureCredential()
token = credential.get_token(resource_uri)
access_token = token.token

# 连接字符串
conn_str = f'Provider=MSOLAP;Data Source=asazure://uksouth.asazure.windows.net/{data_source_suffix};Catalog={database_name};User ID=;Password={access_token};'

try:
    with Pyadomd(conn_str) as conn:
        print("连接成功。")
        with conn.cursor() as cursor:
            # 正确的XMLA刷新命令:用Batch包裹Refresh,使用匹配的命名空间
            refresh_command = f"""
            <Batch xmlns="http://schemas.microsoft.com/analysisservices/2012/engine/200">
                <Refresh>
                    <Object>
                        <DatabaseID>{database_name}</DatabaseID>
                        <CubeID>{model_name}</CubeID>
                    </Object>
                    <Type>Full</Type>
                    <CommitMode>transactional</CommitMode>
                </Refresh>
            </Batch>
            """
            cursor.execute(refresh_command)
            print("数据模型刷新已启动。")

except Exception as e:
    print(f"发生错误: {e}")

额外说明

  • 若刷新整个数据库而非特定模型,可移除<CubeID>{model_name}</CubeID>节点,仅保留<DatabaseID>
  • 若仍有命名空间问题,可尝试对应Azure AS版本的命名空间:
    • 2022版本: http://schemas.microsoft.com/analysisservices/2022/engine/922
    • 2019版本: http://schemas.microsoft.com/analysisservices/2019/engine
  • 确保DefaultAzureCredential获取的令牌拥有Azure AS的处理数据权限(如Azure Analysis Services Administrator角色)

内容的提问来源于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.04 09:19:57