创建、编辑和保存嵌入报表

借助 Power BI 嵌入式分析,可以创建、编辑和保存嵌入的报表。 可以基于现有数据集创建报表,也可以编辑现有报表。 还可以在创建或编辑报表后保存报表。

如何创建报表

了解如何从现有数据集创建新的空白报表。

创建报表所需的访问令牌权限

生成有权访问数据集的嵌入令牌。 如果使用 主用户 身份验证方法,请确保应用程序具有以下范围:Dataset.Read.AllContent.CreateWorkspaces.ReadWrite.all。 有关详细信息,请参阅 嵌入令牌 - 生成令牌

创建报表所需的客户端权限

创建报表需要以下客户端权限:

  • 创建 - 用户可以创建新报表。

  • 所有 - 用户可以创建、查看、编辑、保存和保存报表的副本。

创建新报表

从现有数据集创建新的空白报表。 需要数据集 ID 和嵌入 URL。 例如,可以使用 getDatasetsInGroup REST API 并检索 CreateReportEmbedURL。 有关详细信息,请参阅 数据集 - 获取组 中的数据集。

注意

必须对数据集具有生成或写入权限才能创建新报表。

let embedCreateConfiguration = {
    tokenType: tokenType,
    accessToken: accessToken,
    embedUrl: embedURL,
    datasetId: datasetId,
    settings: settings,
    theme: theme, // optional
};

// Grab the reference to the div HTML element that will host the report
let embedContainer = $('#embedContainer')[0];

// Create report
let report = powerbi.createReport(embedContainer, embedCreateConfiguration);

还可以选择创建应用了主题的报表。 添加到报表的新视觉对象将尊重主题样式。 有关详细信息,请参阅 应用报表主题

如何编辑报表

了解如何编辑现有报表并在“视图”和“编辑”模式之间进行切换。

编辑所需的访问令牌权限

生成有权访问报表的嵌入令牌。 如果使用 主用户 身份验证方法,请确保应用程序具有以下范围:Dataset.ReadWrite.AllReport.ReadWrite.All。 还必须为最终用户需要编辑的每个报表设置 allowEdit: true 标志。 有关详细信息,请参阅 嵌入令牌 - 生成令牌

编辑所需的客户端权限

编辑报表需要以下客户端权限:

  • 复制 - 用户可以使用 另存为保存报表的副本。

  • ReadWrite - 用户可以查看、编辑和保存报表。

  • 所有 - 用户可以创建、查看、编辑、保存和保存报表的副本。

编辑报表

在“编辑”模式下加载现有报表。 报表必须以与应用程序嵌入常规报表的方式相同,并且视图模式必须位于“编辑”中。 请确保将 viewMode 参数设置为 models.ViewMode.Edit,并且具有正确的客户端权限。

let config = {
    type: 'report',
    tokenType: models.TokenType.Aad or models.TokenType.Embed,
    accessToken: YourAccessToken,
    embedUrl: YourEmbedUrl,
    id: YourEmbedReportId,
    permissions: models.Permissions.All,
    viewMode: models.ViewMode.Edit,
};

// Grab the reference to the div HTML element that will host the report
let embedContainer = $('#embedContainer')[0];

// Embed report
let report = powerbi.embed(embedContainer, config);

用户现在可以根据已启用 权限 编辑报表。

还可以在加载报表后在“编辑”和“视图”模式之间进行切换。

report.switchMode("view");

切换到编辑模式:

report.switchMode("edit");

如何保存报表

了解如何保存报表,包括其他选项,例如保存报表的副本并将报表保存到另一个工作区。

保存所需的访问令牌权限

生成有权访问报表和数据集的嵌入令牌。 如果要将报表保存到另一个工作区,令牌需要有权访问目标工作区。 如果使用 主用户 身份验证方法,请确保应用程序具有以下范围:Report.ReadWrite.AllWorkspaces.ReadWrite.all。 还必须为客户需要编辑的每个报表设置 allowEdit: true 标志。 有关详细信息,请参阅 嵌入令牌 - 生成令牌

保存所需的客户端权限

保存报表需要以下客户端权限:

  • ReadWrite - 用户可以查看、编辑和保存报表。

  • 创建 - 用户可以创建新报表。

  • 复制 - 用户可以使用 另存为保存报表的副本。

  • 所有 - 用户可以创建、查看、编辑、保存和保存报表的副本。

保存报表

创建报表时,除非从文件菜单或 JavaScript 调用 save 操作,否则不会保存报表。

report.save();

保存报表的副本

保存具有不同名称的其他副本。 报表的副本将保存到与报表数据集相同的工作区。

let saveAsParameters = {
    name: "newReport"
};

report.saveAs(saveAsParameters);

还可以将报表保存到另一个工作区。 请确保你对目标工作区具有适当的权限。

let saveAsParameters = {
    name: "newReport"
    targetWorkspaceId: "13bbf317-fe2b-4b15-a081-94b0921c28e5"
};

report.saveAs(saveAsParameters);

验证报表是否已保存

调用 report.isSaved 以确保保存报表。 此方法有助于防止丢失未保存的更改。

let isReportSaved = await report.isSaved();

创建自定义 saveAs 体验

通过将 useCustomSaveAsDialog: true 报表设置添加到配置对象,可以创建自定义 saveAs 对话框。 此设置隐藏默认 UI 对话框。

当用户在 UI 中单击 另存为 时,将引发 saveAsTriggered 事件。 使用此信息显示自定义对话框。

report.on("saveAsTriggered", function (event) {
    console.log(event);
});

若要执行另存为操作,可以从自定义对话调用 report.saveAs。 有关详细信息,请参阅 保存报表的副本

let saveAsParameters = {
    name: "newReport"
    targetWorkspaceId: "13bbf317-fe2b-4b15-a081-94b0921c28e5"
};

report.saveAs(saveAsParameters);

侦听保存和 saveAs 事件

当通过 UI 中的 savesaveAs 操作或使用 API 触发保存时,将引发 saved 事件。 有关详细信息,请参阅 如何处理事件

report.on("saved", function (event) {
    console.log(event);
});