如何在C#中使用power bi客户端根据报表ID获取报表页面列表?

问题描述 投票:0回答:2

需要在我的Web api项目中从powerbi获取基于ReportId的报告的页面列表。在 power bi 客户端对象中找不到用于在 C# Web api 中获取页面信息的任何选项。然后尝试使用 HttpClient 但仍然收到以下代码的禁止错误-

        var accessToken = await GetAccessToken(authMode);
        client.BaseAddress = new Uri("https://api.powerbi.com/v1.0/myorg/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

        HttpResponseMessage response = await client.GetAsync("reports/" + reportId);
        if (response.IsSuccessStatusCode)
        {
            var pageList = await response.Content.ReadAsAsync<List<PageInfo>>();
            return pageList;
        }
        return Enumerable.Empty<PageInfo>();
asp.net-web-api powerbi-embedded
2个回答
1
投票

目前无法使用 C# Web API 获取基于

report
reportId
的所有页面。

请检查:
https://community.powerbi.com/t5/Developer/Get-List-Of-Report-Pages-via-C-Rest-API/m-p/376293

但是,您可以使用powerbi-client(JS SDK)来获取

report
的所有页面。

请参考以下代码:

// reportContainer: HTML div element in which report is being embedded
// config: Report embed configuration object
const report = powerbi.embed(reportContainer, config);
const pages = await report.getPages();

// pages is an array which contains all the pages available for the given report.
console.log(pages);

请参考这里:

  1. https://learn.microsoft.com/javascript/api/powerbi/powerbi-client/report.report#getPages__
  2. https://learn.microsoft.com/rest/api/power-bi/reports/get-pages

0
投票

看起来现在这是可能的:

var report = await pbiClient.Reports.GetReportInGroupAsync(WorkspaceId, ReportId);
var pages = await pbiClient.Reports.GetPagesInGroupAsync(WorkspaceId, ReportId);

(使用 Microsoft.PowerBI.Api v4.18.0)

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