Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Power BI embedded analytics powerbi.load and report.render APIs can improve end-user experience by giving developers more flexibility to phase report embedding.
Normally, you load an embedded report by using powerbi.embed:
let report = powerbi.embed(embedContainer, embedConfig);
The embedded report loads and renders in the user interface. The end user then sees any interactions with the rendered report. For example, if you apply a slicer state, the end user sees the slicer take effect after the report renders.
To hide these interactions from end users, the powerbi.load and report.render APIs break down the embedding process into phases. The powerbi.load function loads the report so you can interact with items before end users see the results. The report.render function then displays the report.
Load
The powerbi.load function loads the report but doesn't render it, so interactions can happen before the end user sees the results. For example, you can use powerbi.load with report.getPages, and then specify which page to show the end user. Or, you can use page.getVisuals, and then decide which visuals to show or hide.
Like powerbi.embed, the powerbi.load function requires an HTML element and an IEmbedConfiguration object.
When the load finishes, a loaded event fires.
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
If you use powerbi.load, you must then call the report.render function on the loaded event handler function, after running your code. Use report.render to continue the report rendering and display the embedded report.
A rendered event fires when the report finishes rendering.
report.on('loaded', function() {
report.render();
});
report.on('rendered', () => {
...
});
For more information about handling events, see How to handle events.
Example
The following code example loads a report, sets filters, and then renders the filtered report.
// 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();
});
Considerations and limitations
Phased embedding can slow down report rendering, so be sure to use it correctly and only when you need it.
You can call the following APIs after you load the report and before you call report.render:
| Method | Action |
|---|---|
| BookmarksManager.getBookmarks, BookmarksManager.apply | Get and apply bookmarks. Capturing bookmarks isn't supported. |
| Report.updateSettings | Update report settings. |
| Report.applyTheme | Apply the report theme. |
| Report.getFilters, Report.setFilters, Report.removeFilters | Get, set, and remove report filters. |
| Report.getPages | Get the report pages. |
| Page.setActive | Set the active report page. |
| Page.getFilters, Page.setFilters, Page.removeFilters | Get, set, and remove page filters. |
| Page.getVisuals | Get page visuals. |
| Visual.getFilters, Visual.setFilters, Visual.removeFilters | Get, set, and remove visual filters. |
| Visual.getSlicerState, Visual.setSlicerState | Get and set visual slicer state. |