Сохранение встроенного отчета Power BI в базе данных после внесения изменений

#reactjs #powerbi #powerbi-embedded #powerbi-custom-visuals

#reactjs #powerbi #powerbi-встроенный #powerbi-пользовательские визуальные эффекты

Вопрос:

Я использую встроенный пакет 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;
    }}
/>
  

Отчет внедряется правильно, но теперь, после того, как кто-то внес изменения, как мне снова получить обновленный экземпляр отчета, чтобы я мог получить визуальные элементы и сохранить его в базе данных?

Ответ №1:

В настоящее время power-client-react не поддерживает создание нового отчета. Но вы можете отредактировать существующий отчет и сохранить его как новый отчет, используя эту библиотеку. Для этого необходимо выполнить следующие шаги:

  1. Сгенерировать токен встраивания:

    • Если изменения отчета должны быть сохранены как новый отчет, передайте следующее тело JSON в запросе generate embedded token:

       {
        "accessLevel": "Edit",
        "allowSaveAs": "true",
      }
        
    • Если изменения отчета должны быть сохранены в том же отчете, передайте следующее тело JSON в запросе generate embedded token:

       {
        "accessLevel": "Edit",
      }
        
  2. Встроенный отчет — добавьте эти конфигурации в ваш объект embedConfig:

     viewMode: models.ViewMode.Edit,
    permissions: models.Permissions.All,
      
  3. Обработайте «сохраненное» событие:

    • Если изменения отчета должны быть сохранены как новый отчет, добавьте следующий обработчик событий в свою карту EventHandlers, чтобы получить новый идентификатор отчета, а затем внедрите новый отчет, чтобы получить его экземпляр:

       ['saved', function (event) {
          var newReportId = event.detail.reportObjectId);
      }]
        
    • Если изменения отчета должны быть сохранены в том же отчете, добавьте следующий обработчик событий в свою карту EventHandlers, чтобы убедиться, что изменения были сохранены:

       ['saved', function (event) {
          console.log("Report saved");
      }]
        
  4. Сохраните отчет:

    • Программно: добавьте кнопку сохранения в свое приложение, если вы хотите сохранить изменения при событии нажатия кнопки, и вызовите следующую функцию в прослушивателе щелчков:

      1. Если изменения отчета должны быть сохранены как новый отчет

         function saveReport() {
          var saveAsParameters = {
              name: "<name_of_new_report>"
            };
          this.report.saveAs(saveAsParameters);
        }
          
      2. Если изменения отчета должны быть сохранены в том же отчете

         this.report.save();
          
    • Встроенный интерфейс Power BI:

      1. Если изменения отчета должны быть сохранены как новый отчет:
        • Нажмите на выпадающий список «Файл» в верхнем левом углу> Нажмите «Сохранить как»> Введите имя вашего нового отчета > Нажмите «Сохранить»
      2. Если изменения отчета должны быть сохранены в том же отчете:
        • Нажмите на выпадающий список «Файл» в верхнем левом углу> Нажмите «Сохранить»

Примечание: событие «сохранено» запускается при завершении операции сохранения и возвращает объект Json, содержащий новый идентификатор отчета, имя отчета, старый идентификатор отчета (если он был) и если операция была SaveAs или save. Затем вы можете использовать этот newReportId для создания URL-адреса для встраивания и токена для встраивания отчета и получения экземпляра отчета.

Вы можете обратиться к GitHub wiki, чтобы создать новый отчет.

Найдите полную статью в Microsoft Docs.

Комментарии:

1. Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем?

2. @Anant_Kumar Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем?