BI新手求助:Python调用Power BI REST API获取数据集时参数是否缺失?
Power BI REST API 获取数据集代码问题修正
你的代码存在几个关键问题,导致无法成功获取数据集,具体修正点和完整代码如下:
- resource_url 参数错误:adal库的
resource参数需要传入Power BI服务的根资源URIhttps://api.powerbi.com,而不是带GET方法的API请求地址。 - client_id 赋值错误:你把工作区ID填到了
client_id字段,这里应该是你在Azure AD中注册的应用程序的客户端ID,和工作区ID完全是两个东西。 - 缺少实际API请求逻辑:当前代码只完成了获取token的步骤,没有发起真正的请求去拉取数据集;另外,如果你要获取特定工作区的数据集,API地址应该是
https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/datasets,而不是全局的/datasets(后者是获取你个人工作区的数据集)。 - 权限注意事项:要确保你注册的Azure AD应用已经配置了Power BI API的相关权限(比如
Dataset.Read.All),同时你使用的账号对目标工作区有访问权限。
修正后的完整代码:
!pip install adal import pandas as pd import json import requests import adal # 配置正确参数 authority_url = 'https://login.windows.net/common' # 修正resource为Power BI服务根URI resource_url = 'https://api.powerbi.com' # 替换为你的Azure AD应用客户端ID client_id = 'your_azure_ad_app_client_id' username = 'BI_email' password = 'BI_password' # 替换为你要访问的工作区ID workspace_id = 'your_target_workspace_id' # 获取认证令牌 context = adal.AuthenticationContext(authority=authority_url, validate_authority=True, api_version=None) token = context.acquire_token_with_username_password(resource=resource_url, client_id=client_id, username=username, password=password) # 发起请求获取特定工作区的数据集 api_endpoint = f'https://api.powerbi.com/v1.0/myorg/groups/{workspace_id}/datasets' request_headers = { 'Authorization': f'Bearer {token["accessToken"]}' } response = requests.get(api_endpoint, headers=request_headers) # 处理响应结果 if response.status_code == 200: datasets_data = response.json() print("获取到的数据集信息:") print(json.dumps(datasets_data, indent=2)) # 转为DataFrame方便查看 datasets_df = pd.DataFrame(datasets_data['value']) print("\n数据集列表(表格形式):") print(datasets_df) else: print(f"请求失败,状态码: {response.status_code}") print("错误信息:") print(response.text)
内容的提问来源于stack exchange,提问作者Ryan Quaresma
相关产品推荐
相关产品推荐

