使用Python连接到Power BI XMLA端点

时间:2019-05-28 18:01:11

标签: python powerbi olap xmla

announcement about XMLA endpoints以来,我一直在尝试找出如何通过Python以SSAS OLAP多维数据集的形式连接到powerbi://api.powerbi.com/v1.0/myorg/[workspace name]形式的URL的方法,但是我还没有做任何事情

我有一个超大容量的工作区,可以使用DAX Studio以及explained here的SSMS来连接到该工作区,但是我还没有弄清楚如何使用Python进行工作。我尝试安装olap.xmla,但是当我尝试使用Power BI URL作为位置并使用powerbihttps作为前缀时,出现以下错误。

import olap.xmla.xmla as xmla
p = xmla.XMLAProvider()
c = p.connect(location="powerbi://api.powerbi.com/v1.0/myorg/[My Workspace]")
[...]
TransportError: Server returned HTTP status 404 (no content available)

我确定确实涉及身份验证问题,但是我在这方面有点儿不足。我是否需要在ActiveDirectory中设置“应用”并以某种方式使用API​​?这种连接如何处理身份验证?

如果任何人都知道任何展示如何专门使用Python连接到Power BI XMLA端点的博客文章或其他资源,那就太好了。我的搜索使我失败了,但可以肯定,我不是唯一一个尝试这样做的人。

2 个答案:

答案 0 :(得分:1)

@Gigga指出连接器问题后,我去寻找其他与MSOLAP配合使用的Python模块进行连接,并找到了我可以使用的模块!

该模块为adodbapi(注意先决条件pywin32)。

连接如此简单:

import adodbapi

# Connection string
conn = adodbapi.connect("Provider=MSOLAP.8; \
    Data Source='powerbi://api.powerbi.com/v1.0/myorg/My Workspace Name'; \
    Initial Catalog='My Data Model'")

# Example query
print('The tables in your database are:')
for name in conn.get_table_names():
    print(name)

使用我的Windows凭据通过如下所示的窗口进行身份验证:

Sign in window

答案 1 :(得分:0)

我不熟悉olap.xmla或使用Python连接到olap多维数据集,但我认为问题出在olap.xmla中提供的驱动程序(或连接器?)。

announcement about XMLA endpoints页中,该连接仅适用于SSMS 18.0 RC1或更高版本,这是很新的。与DAX Studio一样,支持xmla连接的版本(版本2.8.2,2019年2月3日)非常新鲜。

olap.xmla的latest version似乎来自2013年8月,因此PowerBI XMLA连接背后可能存在一些Microsoft魔术,这就是为什么它不适用于较旧的连接器的原因。