如何使用Python连接Power BI数据集的XMLA端点并访问目标表
可对接Power BI XMLA端点的Python库
pyadomd:微软官方适配的XMLA连接库,兼容性覆盖Power BI全系列付费容量(Premium/PPU/嵌入容量),支持DAX、MDX两种查询语法,是当前场景的首选python-ssas:轻量级第三方封装库,对接逻辑和pyadomd接近,依赖更少,适合小批量查询场景pyodbc+pandas:需要提前配置MSOLAP ODBC驱动,适合习惯用标准ODBC接口开发的场景
具体解决方案
前置校验
首先确认两个前提配置:
- 承载目标数据集的Power BI容量已开启XMLA端点权限,权限级别设置为读/写
- 你用于连接的账号拥有该数据集的「构建」权限
示例代码(pyadomd实现)
第一步安装依赖
pip install pyadomd
第二步连接查询
from pyadomd import Pyadomd import pandas as pd # 替换连接字符串中占位符为实际信息 connection_string = ( "Provider=MSOLAP;" "Data Source=powerbi://api.powerbi.com/v1.0/myorg/你的Power BI工作区名称;" "User ID=你的Azure AD登录账号;" "Password=你的账号登录密码;" "Initial Catalog=你的目标数据集名称;" ) # 查询语句可使用DAX或MDX,直接指定目标表即可 dax_query = """ EVALUATE '你的目标表名称' """ # 建立连接并拉取数据 with Pyadomd(connection_string) as conn: with conn.cursor().execute(dax_query) as cursor: result_df = pd.DataFrame(cursor.fetchall(), columns=[col.name for col in cursor.description]) print(result_df)
之前adodbapi无返回的常见原因
adodbapi默认枚举表时只会返回系统层面的元数据表,不会展示业务数据表,你需要直接写DAX/MDX语句指定要查询的目标表,不需要先枚举表列表。如果还是查不到,可优先检查连接字符串中的工作区、数据集名称是否和Power BI服务端完全一致,大小写敏感。
内容的提问来源于stack exchange,提问作者softwareDeveloperInProgress
相关产品推荐
相关产品推荐

