После внесения изменений сохранить встроенный отчет 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;
    }}
/>

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


person Learn AspNet    schedule 12.10.2020    source источник


Ответы (1)


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

  1. Создать встроенный токен:

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

      {
        "accessLevel": "Edit",
        "allowSaveAs": "true",
      }
      
    • # P4 #
      {
        "accessLevel": "Edit",
      }
      
  2. # P5 #
    viewMode: models.ViewMode.Edit,
    permissions: models.Permissions.All,
    
  3. Обработать сохраненное событие:

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

      ['saved', function (event) {
          var newReportId = event.detail.reportObjectId);
      }]
      
    • # P8 #
      ['saved', function (event) {
          console.log("Report saved");
      }]
      
  4. Сохраните отчет:

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

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

        function saveReport() {
          var saveAsParameters = {
              name: "<name_of_new_report>"
            };
          this.report.saveAs(saveAsParameters);
        }
        
      2. # P12 #
        this.report.save();
        
    • Встроенный интерфейс Power BI:

      1. If report changes are to be saved as a new report:
        • Click on 'File' dropdown at top-left corner > Click on 'Save as' > Enter the name your new report > Click on 'Save'
      2. If report changes are to be saved in the same report:
        • Click on 'File' dropdown at top-left corner > Click on 'Save'

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

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

Полная статья находится в Microsoft Docs.

person mayur_007X    schedule 15.10.2020
comment
Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем? - person Learn AspNet; 15.10.2020
comment
@Anant_Kumar Итак, в настоящее время мой экземпляр отчета находится в this.report после встраивания отчета. Итак, что теперь пользователь внес изменения в отчет, например, удалил визуальные элементы и добавил новые визуальные элементы. Будет ли экземпляр this.report содержать все новые изменения, внесенные пользователем? - person Learn AspNet; 15.10.2020