Поделиться через


Поэтапное внедрение

Встроенная аналитика powerbi.load и report.render API Power BI может улучшить взаимодействие с конечными пользователями, предоставляя разработчикам большую гибкость при поэтапном внедрении отчетов.

Как правило, внедренный отчет загружается с помощью powerbi.embed:

let report = powerbi.embed(embedContainer, embedConfig);

Внедренный отчет загружается и отображается в пользовательском интерфейсе. Затем конечный пользователь видит все взаимодействия с отчетом, отображаемым для просмотра. Например, если вы применяете состояние среза, конечный пользователь увидит, что срез вступит в силу после подготовки отчета к просмотру.

Чтобы скрыть эти взаимодействия от конечных пользователей, powerbi.load API и report.render разбивают процесс внедрения на этапы. Функция powerbi.load загружает отчет, чтобы вы могли взаимодействовать с элементами до того, как конечные пользователи увидят результаты. Затем report.render функция отображает отчет.

Загрузить

Функция powerbi.load загружает отчет, но не отображает его, поэтому взаимодействие может произойти до того, как конечный пользователь увидит результаты. Например, можно использовать powerbi.load с report.getPages, а затем указать страницу для отображения конечного пользователя. Или можно использовать page.getVisuals, а затем выбрать визуальные элементы для отображения или скрытия.

Как и powerbi.embed, powerbi.load для функции требуется элемент HTML и объект IEmbedConfiguration .

После завершения загрузки возникает loaded событие.

let config = {
    ...
};

// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

report.on('loaded', function() {
    ...
});

Render

При использовании powerbi.loadнеобходимо вызвать функцию report.render в функции обработчика loaded событий после выполнения кода. Используйте для report.render продолжения подготовки отчета к просмотру и отображения внедренного отчета.

Событие rendered срабатывает после завершения подготовки отчета к просмотру.

report.on('loaded', function() {
    report.render();
});

report.on('rendered', () => {
    ...
});

Дополнительные сведения об обработке событий см. в разделе Обработка событий.

Пример

В следующем примере кода выполняется загрузка отчета, установка фильтров, а затем отрисовка отфильтрованного отчета.

// Build the config object.
let config = {
    type: 'report',
    tokenType: TokenType.Embed,
    accessToken: ...,
    embedUrl: ...,
    id: ...,
    ...
};
 
// Get a reference to the embedded report HTML element.
let embedContainer = $('#embedContainer')[0];

// Load the report in the container.
let report = powerbi.load(embedContainer, config);

...
report.on('loaded', async () => {
    await report.setFilters(filters);
    report.render();
});

Ограничения

Поэтапное внедрение может замедлить подготовку отчета, поэтому используйте его правильно и только тогда, когда это необходимо.

Вы можете вызвать следующие API после загрузки отчета и перед вызовом report.render:

Метод Действие
BookmarksManager.getBookmarks, BookmarksManager.apply Получение и применение закладок. Запись закладок не поддерживается.
Report.updateSettings Обновление параметров отчета.
Report.applyTheme Примените тему отчета.
Report.getFilters, Report.setFilters, Report.removeFilters Получение, установка и удаление фильтров отчетов.
Report.getPages Получение страниц отчета.
Page.setActive Задайте активную страницу отчета.
Page.getFilters, Page.setFilters, Page.removeFilters Получение, установка и удаление фильтров страниц.
Page.getVisuals Получение визуальных элементов страницы.
Visual.getFilters, Visual.setFilters, Visual.removeFilters Получение, установка и удаление визуальных фильтров.
Visual.getSlicerState, Visual.setSlicerState Получение и установка состояния визуального среза.

Дальнейшие действия