了解不同的嵌入解决方案

将 Power BI 项 ((如报表、仪表板和 Q&A) )嵌入到应用程序中,可以集成令人惊叹的完全交互式分析,而无需从头开始构建自己的数据可视化效果和控件。 嵌入的 Power BI 分析可以显示应用通过你自己的 Power BI 帐户 拥有 的数据,也可以显示用户通过其 Power BI 帐户 拥有 的数据。

应用程序方案

在应用程序中嵌入 Power BI 报表有两种不同的方案。

  • 为组织嵌入 (也称为 用户拥有数据) :该应用程序允许你集成组织中的用户使用其自己的 Power BI 帐户登录时可访问的数据、报表、仪表板和磁贴。 在这种类型的应用程序中,用户拥有你嵌入的数据。
  • 为客户嵌入 (也称为 应用拥有数据) :应用程序显示上传到自己的 Power BI 帐户的数据、报表、仪表板或磁贴。 在此类型的应用程序中,你使用的是自己的帐户,因此应用程序拥有客户的数据。 客户不需要自己的 Power BI 帐户。

使用的应用程序方案决定了如何检索 访问令牌 ,以便访问数据并在应用程序中嵌入内容。

嵌入的内容类型由 参数的值embedUrl 指定。 若要检索特定类型内容的嵌入 URL,请调用相应的 Power BI REST API。 例如,调用 “获取报表 ”以检索嵌入报表的嵌入 URL。

以下部分介绍如何检索访问令牌,并为每个应用程序方案嵌入报表。

为组织嵌入内容

在此方案中,应用程序的用户使用其 Power BI 帐户登录。 这为你提供访问令牌,用于访问其数据并嵌入其报表、仪表板和磁贴。

embedConfiguration中,将 设置为 TokenType.AadtokenType

// Get models so you can use the TokenType enum.
let models = window['powerbi-client'].models;

let embedConfiguration = {
    type: 'report',
    id: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',
    embedUrl: 'https://app.powerbi.com/reportEmbed',
    tokenType: models.TokenType.Aad,
    accessToken: 'e4...rf'
};

let reportContainer = $('#reportContainer')[0];
let report = powerbi.embed(reportContainer, embedConfiguration);

为客户嵌入内容

在此方案中,你将创建一个有权访问所有 Power BI 项的专用标识。 然后,通过调用 Power BI REST API 嵌入令牌 ,为要嵌入的报表、仪表板或磁贴生成 嵌入令牌。 获得 嵌入令牌后,使用以下代码嵌入报表:

embedConfiguration中,将 设置为 TokenType.EmbedtokenType

// Get models so you can use the TokenType enum.
let models = window['powerbi-client'].models;

let embedConfiguration = {
    type: 'report',
    id: '5dac7a4a-4452-46b3-99f6-a25915e0fe55',
    embedUrl: 'https://app.powerbi.com/reportEmbed',
    tokenType: models.TokenType.Embed,
    accessToken: 'h4...rf'
};

let reportContainer = $('#reportContainer')[0];
let report = powerbi.embed(reportContainer, embedConfiguration);

后续步骤