如何在同一个 Power BI 嵌入应用程序中为不同的工作区生成令牌

How to generate a token for different workspaces in same Power BI embedding app

我在工作区 1 中有一个 Power BI 报表,在工作区 2 中有两个 Power BI 数据集。

是否可以生成令牌,我可以在其中嵌入工作区 1 中的 Power BI 报告并动态绑定工作区 2 中的数据集?

您可以使用以下 API

为您的数据集和报告生成令牌

POST https://api.powerbi.com/v1.0/myorg/GenerateToken

请求正文应包含以下内容:

{
  datasets: [{ id: "IdOfRequiredDataset" }],
  reports: [{ id: "IdofRequiredReport" }],
  targetWorkspaces: [
    { id: "WorkspaceIdofReport" },
    { id: "WorkspaceIdOfDataset" },
  ],
}

现在,只要数据集具有相同的数据架构,您就可以将数据集动态绑定到您的报表。 要使用动态绑定绑定不同的数据集,请将 datasetBinding 属性 添加到嵌入配置对象。

请参考以下代码片段:

const reportConfig = {
        type: 'report',
        tokenType: models.TokenType.Embed,
        accessToken: "tokenGeneratedByAPI", // Access token returned by generate token API
        embedUrl: embedParams.EmbedReport[0].EmbedUrl,
        // Adding datasetBinding property
        datasetBinding: {
            datasetId: "datasetId", // ID of dataset that you want the report to use
        },
    };

// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0]; 

// Embed the report and display it within the div container.
let report = powerbi.embed(embedContainer, config);

Report before using datasetBinding(使用报表的原始数据集):

使用datasetBinding后的报告(将报告绑定到其他数据集):

也可以参考https://docs.microsoft.com/en-us/javascript/api/overview/powerbi/bind-report-datasets