2017-06-06 94 views
0

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

我想要做的第一件事就是向Power BI发出一个简单的“致电”。

official documentation解释了通过客户端应用程序或Web应用程序的REST API连接到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 

阅读其他计算器帖子,看着控制台应用程序后,我相信原因这不起作用是因为没有用户登录过程。

This thread提到,使用客户端凭证是不够的(这是足以让的accessToken,但不足以使用API​​)

不知道如何着手,但我需要的是也许保持方式使用这adal template,它给了我accessToken,并提供我的用户名和密码(如果需要),并与accessToken一起访问API。

回答

0

我看到你在PowerBI论坛上回答了这个过来:

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

对于任何人在未来访问这个备查:

使用Python阿达尔库获取您的令牌和适当的方法。一旦你有你的道理,你把它传递的请求标头中的一部分,就像这样:

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和令牌是字典,你从acquire_token_with_username_password得到令牌。

从那里你将能够使你需要的所有PowerBI API调用。