使用Python访问Power BI API

问题描述 投票:1回答:1

我的要求是使用Python将实时数据推送到Power BI,首先从数据库中读取,然后在Power BI中的Streaming数据集中发送数据。

我想要的第一件事是对Power BI进行简单的“获取”调用。

official documentation解释了通过REST API为客户端应用程序或Web应用程序连接到Power BI的过程。但是,我正在使用Python - 不确定它是客户端应用程序还是Web应用程序。

无论如何,我能够使用adal库和.acquire_token_with_client_credentials方法获取accessToken,方法请求authority_uri,tenant,client_id和client_secret(注意这不是要求用户名和密码)。顺便说一下,我也尝试用.acquire_token_with_username_password获取accessToken,但这不起作用。

不幸的是,当我使用下面的代码获取accessToken时,我收到了响应403。

#accessToken is received using the adal libary 
headers = {'Authorization': 'Bearer ' + accessToken, 'Content-Type': 'application/json'}
read_datasets = requests.get('https://api.powerbi.com/v1.0/myorg/datasets', headers=headers)
#shockingly, this will result in a response 403

阅读其他stackoverflow帖子并查看控制台应用程序后,我认为这不起作用的原因是因为没有用户登录过程。

This thread提到使用客户端凭据是不够的(它足以获取accessToken,但不足以使用API​​)

不确定如何继续,但我需要的是一种方法来继续使用这个adal template给我accessToken,并提供我的用户名和密码(如果需要),并与accessToken一起访问API。

api azure powerbi
1个回答
1
投票

我看到你在PowerBI论坛上已经回答了这个问题:

https://community.powerbi.com/t5/Developer/Access-Power-BI-API-with-Python/m-p/190087#M6029

供将来参观此活动的任何人参考:

使用python adal库和相应的方法获取令牌。获得令牌后,您将其作为请求标头的一部分传递,如下所示:

    url = f'{self.api_url}/v1.0/myorg/groups/{self.group_id}/datasets'
    headers = {
        'Authorization': f'Bearer {self.token["accessToken"]}'
    }

其中api_url是https://api.powerbi.com,group_id是你的group_id,而token是你从acquire_token_with_username_password得到的令牌字典。

从那里,您将能够进行所需的所有PowerBI API调用。

© www.soinside.com 2019 - 2024. All rights reserved.