2017-06-06 125 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調用。