首页 > 解决方案 > 创建新报表时,我在 PowerBIEmbed 中放置什么作为报表 ID?

问题描述

我正在尝试使用PowerBIEmbedReact 组件来创建和设计一个新报告。当我编辑现有报告时,一切都很好,但是当我创建一个新报告时(使用生成的嵌入令牌TokenAccessLevel.Create),我收到以下错误:

报告 ID 是必需的,但未找到。您必须提供一个 ID 作为嵌入配置的一部分或作为属性“powerbi-report-id”。

我通过配置传入的 id 是空的 GUID ( "00000000-0000-0000-0000-000000000000")。我也尝试从配置中删除该属性。

我将权限设置为models.Permissions.All(包括models.Permissions.Create),所以这不是问题。

客户端代码

const config = {
  permissions: models.Permissions.All,
  tokenType: models.TokenType.Embed,
  type: 'report',
  embedURL: generatedURL,
  accessToken: generatedToken,
  viewMode: models.ViewMode.Edit,
};

return (
  <PowerBIEmbed
    embedConfig={config}
    getEmbeddedComponent={report => this.setState({ report })}
  />
);

服务器代码

var authToken = await PowerBIAuthentication.DoAuthentication(_Config);
using var client = new PowerBIClient(new Uri(_Config.ApiUrl), authToken);
var dataSets = await client.Datasets.GetDatasetsInGroupAsync(_Config.WorkspaceId, cancellationToken);
var dataSet = dataSets.Value.First(x => x.Name == "AppProtoModel");

var embedTokenParameters = new GenerateTokenRequest(TokenAccessLevel.Create, dataSet.Id);
var embedToken = await client.Reports.GenerateTokenForCreateInGroupAsync(
  _Config.WorkspaceId, 
  embedTokenParameters, 
  cancellationToken: cancellationToken);

myDoc.PowerBISettings.EmbedToken = embedToken;
myDoc.PowerBISettings.EmbedUrl = dataSet.CreateReportEmbedURL;

return myDoc;

标签: powerbipowerbi-embedded

解决方案


目前,powerbi-client-react库中的 PowerBIEmbed 组件不支持 Power BI Report 的创建模式嵌入,可以使用Power BI JS SDK实现。

请参考以下代码片段:

const embedConfiguration: IEmbedConfiguration = {
   permissions: models.Permissions.All,
   tokenType: models.TokenType.Embed,
   type: "report",
   embedUrl: createReportEmbedURL,
   accessToken: createEmbedToken,
   viewMode: models.ViewMode.Edit,
   datasetId: datasetId, 
};

const report = powerbi.createReport(reportContainer, embedConfiguration);

上面片段中提到的 createReportEmbedURL 可以使用Datasets - Get Dataset API生成。上述代码段中提到的 createEmbedToken 可以使用Embed Token - Report GenerateTokenForCreateInGroup API 生成

注意:配置中传入的 datasetId 应该与生成 createReportEmbedURL 时使用的相同。

有关更多信息,请参阅以下文档: 创建和保存嵌入式报告


推荐阅读