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


Использование поэтапного внедрения

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

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

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

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

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

Груз

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

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

По завершении загрузки событие 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() {
    ...
});

Передавать

Если вы используете 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 Получение и настройка состояния визуального среза.