将数据集动态绑定到分页报表

Power BI 报表和分页报表基于现有数据集生成。 该数据集定义报表视觉对象使用的数据架构。 通过使用动态绑定,可以在嵌入分页报表视觉对象时动态选择数据集。

选择的数据集需要使用相同的数据架构。 如果有多个数据集具有相同的数据架构,则报表可以动态连接到或绑定每个数据集。 然后,可以根据需求显示不同的见解。

动态绑定也具有其他优势。 无需为每个用户创建具有不同数据集的同一报表的副本。 一个报表可以为多个用户提供服务。 然后,此功能可减少维护的项数,并改进应用程序生命周期处理。 因此,动态绑定简化了新客户的载入。

如何将报表动态连接到多个数据集

报表和数据集可以位于的单独 工作区中,但两个工作区必须具有容量。

为客户嵌入时,嵌入令牌必须同时包含报表和动态绑定数据集的权限。 使用新 API 生成支持 Power BI 项(如报表和仪表板)的 嵌入令牌

为组织嵌入时,你使用的用户 Azure Active Directory (AD) 令牌必须对所有 Power BI 项具有适当的权限。

示例 1:使用动态绑定嵌入分页报表

若要使用动态绑定实现嵌入分页报表,请将 datasetBindings 属性添加到嵌入配置对象,如以下示例所示。

let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: "reportId",
    permissions: permissions,
    datasetBindings: [{
            sourceDatasetId: "originalDatasetId",
            targetDatasetId: "notOriginalDatasetId"
        }]
};

// 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);

示例 2:使用动态绑定嵌入分页报表视觉对象

分页报表视觉对象是嵌入在 Power BI 报表中的分页报表。 若要使用动态绑定实现嵌入分页报表视觉对象,请将 datasetBinding 属性添加到嵌入配置对象,如以下示例所示。

let config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: "reportId",
    permissions: permissions,
    datasetBinding: {
        datasetId: "notOriginalDatasetId",
        paginatedReportBindings: [{
            sourceDatasetId: "originalDatasetId",
            targetDatasetId: "notOriginalDatasetId"
        }]
    }
};

// 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);

注意事项和限制

  • 动态选择的数据集必须在报表中使用相同的数据架构。
  • 为客户嵌入时,使用新 API 生成 嵌入令牌
  • 为组织嵌入时,请确保用户具有报表和数据集的权限。
  • datasetBinding 属性不能为空。 它应包含、datasetIdpaginatedReportBindings或两者。
  • datasetIdtargetDatasetId 的值不必相同。 绑定适用于 .pbix 和分页报表。
  • datasetBinding 属性可以包含多个对象。