Uso de la inserción por fases
Las API de powerbi.load
y report.render
de análisis insertados de Power BI pueden mejorar la experiencia del usuario final al proporcionar a los desarrolladores más flexibilidad para la inserción de informes por fases.
Normalmente, se carga un informe incrustado mediante powerbi.embed
:
let report = powerbi.embed(embedContainer, embedConfig);
El informe incrustado se carga y representa en la interfaz de usuario. A continuación, el usuario final ve las interacciones con el informe representado. Por ejemplo, si aplica un estado de segmentación de datos, el usuario final ve que la segmentación surte efecto después de que el informe se represente.
Para ocultar estas interacciones de los usuarios finales, las API de powerbi.load
y report.render
desglosan el proceso de inserción en fases. La función powerbi.load
carga el informe para que pueda interactuar con elementos antes de que los usuarios finales vean los resultados. A continuación, la función report.render
muestra el informe.
Carga
La función powerbi.load
carga el informe, pero no la representa, por lo que las interacciones pueden producirse antes de que el usuario final vea los resultados. Por ejemplo, puede usar powerbi.load
con report.getPages
y, a continuación, especificar qué página se mostrará al usuario final. O bien, puede usar page.getVisuals
y, a continuación, decidir qué objetos visuales mostrar u ocultar.
Al igual que powerbi.embed
, la función powerbi.load
requiere un elemento HTML y un objeto IEmbedConfiguration.
Cuando finaliza la carga, se desencadena un evento 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() {
...
});
Hacer
Si usa powerbi.load
, debe llamar a la función report.render
en la función del controlador de eventos loaded
, después de ejecutar el código. Use report.render
para continuar con la representación del informe y mostrar el informe incrustado.
Un evento rendered
se desencadena cuando el informe termina de representarse.
report.on('loaded', function() {
report.render();
});
report.on('rendered', () => {
...
});
Para obtener más información sobre el control de eventos, vea Cómo controlar eventos.
Ejemplo
En el ejemplo de código siguiente se carga un informe, se establecen filtros y, a continuación, se representa el informe filtrado.
// 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();
});
Consideraciones y limitaciones
La inserción por fases puede ralentizar la representación de informes, por lo que asegúrese de usarla correctamente y solo cuando la necesite.
Puede llamar a las siguientes API después de cargar el informe y antes de llamar a report.render
:
Método | Acción |
---|---|
BookmarksManager.getBookmarks, BookmarksManager.apply | Obtenga y aplique marcadores. No se admite la captura de marcadores. |
Report.updateSettings | Actualice la configuración del informe. |
report.applyTheme | Aplique el tema del informe. |
Report.getFilters, Report.setFilters, Report.removeFilters | Obtener, establecer y quitar filtros de informe. |
report.getPages | Obtenga las páginas del informe. |
Page.setActive | Establezca la página del informe activo. |
Page.getFilters, Page.setFilters, Page.removeFilters | Obtiene, establece y quita filtros de página. |
page.getVisuals | Obtener objetos visuales de página. |
Visual.getFilters, Visual.setFilters, Visual.removeFilters | Obtiene, establece y quita filtros visuales. |
Visual.getSlicerState, Visual.setSlicerState | Obtiene y establece el estado de segmentación de objetos visuales. |