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

Ubuntu环境使用pyadomd连接SSAS遇RuntimeError问题求解

解决Ubuntu Cloud Composer中pyadomd导入错误及路径配置问题

1. 核心问题根源

pyadomd依赖pythonnet调用.NET库,Ubuntu系统默认未安装兼容的.NET runtime(错误提示中的mono是备选runtime之一);同时Windows下的ADOMD.NET路径在Ubuntu环境不存在,需手动处理。

2. 步骤一:安装兼容的.NET Runtime

推荐安装.NET 6 SDK(LTS版本,兼容性更稳定),替代Mono:

  • 在Cloud Composer环境中,通过自定义镜像或初始化脚本执行以下命令:
    # 添加微软软件源
    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
    # 安装.NET 6 SDK
    apt-get update && apt-get install -y dotnet-sdk-6.0
    
  • 若选择Mono,执行:
    apt-get update && apt-get install -y mono-complete
    

3. 步骤二:获取ADOMD.NET库文件

Windows下\Program Files\Microsoft.NET\ADOMD.NET\160路径对应的核心文件是Microsoft.AnalysisServices.AdomdClient.dll,Ubuntu中需手动获取:

  • 从Windows机器的对应路径复制该dll文件
  • 将文件上传至Cloud Composer的工作目录(如DAGs文件夹下的libs子目录),或通过初始化脚本放到固定路径(如/opt/adomd-net/160)

4. 步骤三:配置runtime与路径

在DAG的Python代码中添加如下配置:

import sys
import clr
from pyadomd import Pyadomd

# 指定.NET runtime类型(用.NET 6填dotnet,用Mono填mono)
clr.set_runtime("dotnet")

# 添加ADOMD.NET dll所在路径到系统路径
# 示例:dll放在DAG目录的libs文件夹下
adomd_path = "/home/airflow/gcs/dags/libs"
sys.path.append(adomd_path)

# 加载ADOMD.NET库
clr.AddReference("Microsoft.AnalysisServices.AdomdClient")

# 正常使用pyadomd连接SSAS
with Pyadomd("你的SSAS连接字符串") as conn:
    # 编写查询逻辑
    pass

也可通过Cloud Composer环境变量配置:

  • 设置PYTHONNET_RUNTIME=dotnet(或mono)
  • 设置PYTHONNET_DOTNET_VERSION=6.0(若使用.NET 6)

5. 额外注意事项

  • 确保Cloud Composer的Airflow Worker有访问SSAS服务器的网络权限(如VPC对等连接、公网访问权限)
  • 保证ADOMD.NET版本与SSAS服务器版本兼容(160对应SQL Server 2022版本)

内容的提问来源于stack exchange,提问作者MI Haque

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:03:14