【问题标题】:MS Analysis Services OLAP API for Python [closed]适用于 Python 的 MS 分析服务 OLAP API [关闭]
【发布时间】:2023-04-06 22:34:01
【问题描述】:

我正在寻找一种方法来连接到 MS Analysis Services OLAP 多维数据集、运行 MDX 查询并将结果提取到 Python 中。换句话说,正是 Excel 所做的。是否有 Python 中的解决方案可以让我这样做?

有类似问题的人指向 Django 的 ORM。尽管我很喜欢这个框架,但这不是我想要的。我也不是在寻找一种方法来提取行并聚合它们——这就是 Analysis Services 的首要用途。

想法?谢谢。

【问题讨论】:

  • 你试过包装 adomd.dll 吗?我正要试一试。

标签: python database olap


【解决方案1】:

使用 pythonnet 可以很容易地做到这一点:

http://pythonnet.github.io/

您加载随 SQL Server 2005 和 2008 提供的 Microsoft.AnalysisServices.dll 或在此处获取可再发行包:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4

搜索 SQLSERVER2008_ASAMO10.msi

然后你就可以加载它并使用它了。下面是一个简单处理多维数据集的示例:

import CLR
from CLR.System.Reflection import Assembly

Assembly.LoadWithPartialName("AnalysisServices.DLL")

from CLR.Microsoft.AnalysisServices import Server
from CLR.Microsoft.AnalysisServices import ProcessType

serverName = 'localhost\sql2005'
dbName = 'MyDatabase'

# Connect to server
amoServer = Server()
amoServer.Connect(serverName)

# Connect to database
  amoDb = amoServer.Databases[dbName]
    amoDb.Process(ProcessType.ProcessFull)

【讨论】:

    【解决方案2】:

    我对Python一无所知,但是如果它可以调用DLL,那么它应该可以使用微软的ADOMD对象。这是我能想到的最佳选择。

    您可以查看 Office Web Components (OWC),因为它具有 OLAP 控件,可以嵌入到网页中。我认为您可以将 MDX 传递给它,但也许您希望 Python 也能看到结果,我认为它不允许。

    否则,也许您可​​以用另一种语言构建自己的“代理”。该程序/网页可以接受 MDX,并返回显示结果的 XML。然后 Python 可以使用这个 XML。

    【讨论】:

    • 据我所知,它可以调用 DLL。问题是它们的文档记录很差。实际上,这同样适用于客户端-OLAP 服务器通信协议。我会自己(或尝试)用 Python 实现一个客户端,但我在任何地方都找不到任何东西。有什么指点吗?
    • 找到一个展示如何调用 DLL 的 Python 示例。然后在您的开发机器上安装 MS SQL Server“客户端组件”,并尝试将 Python 示例更改为调用 adomd.dll 并使用 Microsoft 文档来告诉您要使用哪些类/对象/属性。在 VBScript 中我们会做 Server.CreateObject("ADOMD.Cellset")
    【解决方案3】:

    借助 python 包 xmla,您可以轻松连接和访问 OLAP 多维数据集。 xmla 在与 OLAP 的通信中起着至关重要的作用,并与多维数据集一起执行所有功能。

    通过

    安装xmla
    python -m pip install xmla --user
    

    python -m venv xmlaenv
    # python -m venv --without-pip xmlenv - use if the above commands throws error
    cd xmlaenv
    source bin/activate
    git clone https://github.com/may-day/olap
    cd olap/xmla
    # optional if you have it already
    pip install pipenv
    pipenv install -dev
    python setup.py develop
    

    安装后,使用位置、用户名和密码参数连接到 OLAP XMLA 多维数据集。

    import olap.xmla.xmla as xmla
    provider = xmla.XMLAProvider()
    connect = provider.connect(location='http://localhost/OLAP/msmdpump.dll',
     username = 'test', password = 'test')
    source = connect.getOLAPSource()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      相关资源
      最近更新 更多