Compartir a través de


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.getPagesy, a continuación, especificar qué página se mostrará al usuario final. O bien, puede usar page.getVisualsy, 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.