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

Lea*_*Net 2 reactjs powerbi powerbi-embedded powerbi-custom-visuals

我正在使用 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;
    }}
/>
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

  1. 生成嵌入令牌

  2. 嵌入报告 - 在您的 embedConfig 对象中添加这些配置:

    viewMode: models.ViewMode.Edit,
    permissions: models.Permissions.All,
    
    Run Code Online (Sandbox Code Playgroud)
  3. 处理“保存”事件:

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

      ['saved', function (event) {
          var newReportId = event.detail.reportObjectId);
      }]
      
      Run Code Online (Sandbox Code Playgroud)
    • 如果要将报告更改保存在同一报告中,请在 eventHandlers 映射中添加以下事件处理程序,以确保更改已保存:

      ['saved', function (event) {
          console.log("Report saved");
      }]
      
      Run Code Online (Sandbox Code Playgroud)
  4. 保存报告:

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

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

        function saveReport() {
          var saveAsParameters = {
              name: "<name_of_new_report>"
            };
          this.report.saveAs(saveAsParameters);
        }
        
        Run Code Online (Sandbox Code Playgroud)
      2. 如果要将报告更改保存在同一报告中

        this.report.save();
        
        Run Code Online (Sandbox Code Playgroud)
    • Power BI 嵌入式体验:

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

注意: “saved”事件在保存操作完成时被触发,它返回一个Json 对象,其中包含新的 reportId、报告名称、旧的 reportId(如果有)以及操作是 saveAs 还是 save。然后就可以使用这个newReportId生成embed url和embed token来嵌入报表并获取报表的实例。

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

Microsoft Docs 中查找完整文章。