Power BI API - Как я могу получать отчеты с app.powerbi.com? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть клиент, который использует Power BI App .
И с помощью этого API я хочу получить все отчеты (.pbix) в моей папке.

Как мне их получить?

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете просто открыть отчет в браузере и сохранить его как файл .pbix:

enter image description here

Если вы хотите сделать это с помощью APIВам понадобится Экспорт отчета в группе REST API.Чтобы использовать его, вам необходимо получить токен доступа и добавить его в заголовок запроса.Вы можете получить его, вызвав некоторые методы AcuireToken из ADAL .

Вы можете использовать подобный код (обратите внимание, что в этом примере проверка ошибок не выполняется):

string clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; // Obtain at https://dev.powerbi.com/apps
string redirectUri = "https://login.live.com/oauth20_desktop.srf";
string resourceUri = "https://analysis.windows.net/powerbi/api";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";

AuthenticationContext authContext = new AuthenticationContext(authorityUri, new TokenCache()); // PM> Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory

var authenticationResult = await authContext.AcquireTokenAsync(resourceUri, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Auto));
var accessToken = authenticationResult.AccessToken);

string powerBIApiUrl = "https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportKey}/Export"; // Replace groupId and reportKey with actual values

var request = WebRequest.Create(powerBIApiUrl) as HttpWebRequest;
request.KeepAlive = true;
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "application/json";
request.Headers.Add("Authorization", $"Bearer {accessToken}");

using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
{
    //Read httpResponse.GetResponseStream() to get the .pbix file
}       
...