进行更改后,将Power BI嵌入式报表保存到数据库中

问题描述

我正在使用power bi嵌入式软件包来嵌入power bi报告-https://github.com/microsoft/powerbi-client-react

报告嵌入在编辑模式下,因此用户可以创建或编辑报告。现在,我有一个保存按钮,一旦用户对Power Bi报表进行了更改,我想将该报表保存在数据库中。您能告诉我如何触发报告事件吗?看来允许的保存事件不起作用。

此外,如果我必须在用户进行更改或创建报表后获取报表实例,如何才能再次获取报表实例以反映新更改?

<PowerBIEmbed
    embedConfig = {{
        type: 'report',// Supported types: report,dashboard,tile,visual and qna
        id: '<Report Id>',embedUrl: '<Embed Url>',accesstoken: '<Access Token>',tokenType: models.TokenType.Embed,viewmode: models.viewmode.Edit,settings: {
            panes: {
                filters: {
                    expanded: false,visible: false
                }
            },background: models.BackgroundType.Transparent,}
    }}

    eventHandlers = { 
        new Map([
            ['loaded',function () {console.log('Report loaded');}],['rendered',function () {console.log('Report rendered');}],['error',function (event) {console.log(event.detail);}]
        ])
    }
        
    cssClassName = { "report-style-class" }

    getEmbeddedComponent = { (embeddedReport) => {
        this.report = embeddedReport as Report;
    }}
/>

报表已正确嵌入,但是现在有人进行了更改之后,如何再次获取更新的报表实例,以便获得视觉效果并将其存储在数据库中?

解决方法

当前,power-client-react不支持创建新报告。但是,您可以使用该库编辑现有报告并将其另存为新报告。 为此,您需要执行以下步骤:

  1. Generate embed token

    • 如果要将报告更改另存为新报告,请在生成嵌入令牌请求中传递以下JSON正文:

      std::ignore
    • 如果要将报告更改保存在同一报告中,请在生成嵌入令牌请求中传递以下JSON正文:

      {
        "accessLevel": "Edit","allowSaveAs": "true",}
      
  2. 嵌入的报告-在您的embedConfig对象中添加以下配置:

    {
      "accessLevel": "Edit",}
    
  3. 处理“保存”事件:

    • 如果要将报告更改另存为新报告,请在eventHandlers映射中添加以下事件处理程序以获取新报告ID,然后嵌入新报告以获取其实例:

      viewMode: models.ViewMode.Edit,permissions: models.Permissions.All,
    • 如果要在同一报表中保存报表更改,请在eventHandlers映射中添加以下事件处理程序,以确保已保存更改:

      ['saved',function (event) {
          var newReportId = event.detail.reportObjectId);
      }]
      
  4. 保存报告:

    • 以编程方式:如果要保存按钮单击事件的更改并在单击侦听器中调用以下函数,请在应用程序中添加一个保存按钮:

      1. 如果要将报告更改另存为新报告

        ['saved',function (event) {
            console.log("Report saved");
        }]
        
      2. 如果要将报告更改保存在同一报告中

        function saveReport() {
          var saveAsParameters = {
              name: "<name_of_new_report>"
            };
          this.report.saveAs(saveAsParameters);
        }
        
    • Power BI嵌入式体验:

      1. 如果要将报告更改另存为新报告:
        • 单击左上角的“文件”下拉菜单>单击“另存为”>输入新报告的名称>单击“保存”
      2. 如果要将报告更改保存在同一报告中:
        • 单击左上角的“文件”下拉菜单>单击“保存”

注意:当保存操作完成时,将触发“保存”事件,该事件返回一个Json object,其中包含新的reportId,报告名称,旧的reportId(如果有)。以及操作是saveAs还是save。然后,您可以使用此newReportId生成嵌入网址和嵌入令牌,以嵌入报告并获取报告实例。

您可以参考GitHub wiki来创建新报告。

Microsoft Docs中找到完整的文章。