使用 Python 连接到 Power BI XMLA 端点

Posted

技术标签:

【中文标题】使用 Python 连接到 Power BI XMLA 端点【英文标题】:Connect to Power BI XMLA endpoint with Python 【发布时间】:2019-05-28 18:01:11 【问题描述】:

从announcement about XMLA endpoints 开始,我一直在尝试弄清楚如何通过 Python 连接到 powerbi://api.powerbi.com/v1.0/myorg/[workspace name] 形式的 URL 作为 SSAS OLAP 多维数据集,但我没有任何工作。

我有一个高级容量的工作区,我可以使用 DAX Studio 以及 SSMS 作为explained here 连接到它,但我还没有弄清楚如何使用 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?这种连接如何处理身份验证?

如果有人知道任何博客文章或其他资源来演示如何专门,那将是惊人的。我的搜索失败了,但我肯定不会是唯一一个尝试这样做的人。

【问题讨论】:

我们的团队使用 olap.xmla 连接到 Mondrian,但我们还没有尝试连接到 PBI,所以我在这里也超出了我的深度。尝试使用常识,因为 python 是第 3 方工具,您需要提供登录凭据。您是否尝试过类似的方法: p.connect(location="powerbi://api.powerbi.com/v1.0/myorg/[My Workspace]", username="blah", password="blah") ?跨度> 使用 DAX Studio 和 SSMS 进行连接,我得到了一个 OAuth 重定向来登录。我讨厌明文形式的凭据,但我认为值得一试,看看它是否有效。 我明白了,这里也是。但我会先尝试一下,以确保您可以建立连接,然后看看如何在 python 中获得相同的 OAuth 重定向。 @RADO,我确实找到了不需要明文的解决方案! 【参考方案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 凭据通过弹出如下窗口进行身份验证:

【讨论】:

【参考方案2】:

我不熟悉 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 魔法,这就是它不适用于旧连接器的原因。

【讨论】:

这是关于 Python 连接器的一个好点,但更一般地说,XMLA 连接的重要之处在于它不需要需要特殊的 Microsoft 魔法,如 Power BI 和 Excel已经有了。注意公告如何提到“开放平台连接”和“第三方数据可视化工具”。它看起来确实“需要latest versions of MSOLAP”。

以上是关于使用 Python 连接到 Power BI XMLA 端点的主要内容,如果未能解决你的问题,请参考以下文章

使用身份验证将 Web API 作为数据源连接到 power bi

连接到共享点时出现 Power BI 错误

如何从 Power BI 连接到 SQL Server 数据库? [关闭]

将 Azure 数据连接到 Power BI 的 oData 时出现问题

通过 Direct Query 连接到 Azure 专用 SQL 池的 Power BI 报表性能缓慢

如何通过 Azure 虚拟网络从 power bi 桌面应用程序连接到 cosmos db