将Power BI与Python链接以下载报告并将其发送给whatsApp联系人



我手头的问题陈述是,我正试图在Python的帮助下,自动化从Power BI下载报告的过程,并将其发送到各种WhatsApp联系人。

这可能吗?

我找到了可以用来下载报告的Microsoft REST API,但我在尝试配置凭据和其他东西时迷失了方向。

查看以下案例中的回复Power BI API-如何从app.powerbi.com获取报告?

如果您想使用API完成此操作,则需要导出组中的报表REST API。要使用它,您需要获取一个访问令牌并将其添加到请求标头中。您可以通过从ADAL调用一些AcuireToken方法来获取它。

你可以使用这样的代码(请注意,在这个例子中没有错误检查(:

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
}   

此外,还有其他有用的链接:

  • https://community.powerbi.com/t5/Developer/Power-BI-REST-API-using-postman-generate-embed-token/m-p/310153#M9157
  • https://www.sqlshack.com/how-to-access-power-bi-rest-apis-programmatically/

最新更新