Partilhar via


Usar a inserção em fases

As APIs de powerbi.load de análise integrada do Power BI e report.render podem melhorar a experiência do usuário final, proporcionando aos desenvolvedores mais flexibilidade para a inserção de relatórios de fase.

Normalmente, você carrega um relatório inserido usando powerbi.embed:

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

O relatório inserido carrega e renderiza na interface do usuário. Em seguida, o usuário final vê todas as interações com o relatório renderizado. Por exemplo, se você aplicar um estado de segmentação de dados, o usuário final verá a segmentação entrar em vigor após a renderização do relatório.

Para ocultar essas interações de usuários finais, as APIs powerbi.load e report.render dividem o processo de inserção em fases. A função powerbi.load carrega o relatório para que você possa interagir com itens antes que os usuários finais vejam os resultados. A função report.render exibe o relatório.

Carga

A função powerbi.load carrega o relatório, mas não o renderiza, portanto, as interações podem acontecer antes que o usuário final veja os resultados. Por exemplo, você pode usar powerbi.load com report.getPagese, em seguida, especificar qual página mostrar ao usuário final. Ou você pode usar page.getVisualse decidir quais visuais mostrar ou ocultar.

Como , a função requer um elemento HTML e um objeto IEmbedConfiguration .

Quando a carga é concluída, um evento loaded é acionado.

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() {
    ...
});

Prestar

Se você usar powerbi.load, deverá chamar a função report.render na função de manipulador de eventos loaded depois de executar seu código. Use report.render para continuar a renderização do relatório e exibir o relatório inserido.

Um evento rendered é acionado quando o relatório conclui a renderização.

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

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

Para obter mais informações sobre como lidar com eventos, consulte Como lidar com eventos.

Exemplo

O exemplo de código a seguir carrega um relatório, define filtros e renderiza o relatório 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();
});

Considerações e limitações

A inserção em fases pode reduzir a velocidade da renderização do relatório, portanto, use-a corretamente e somente quando precisar.

Você pode chamar as seguintes APIs depois de carregar o relatório e antes de chamar report.render:

Método Ação
BookmarksManager.getBookmarks, BookmarksManager.apply Obter e aplicar indicadores. Não há suporte para capturar indicadores.
Report.updateSettings Atualizar as configurações do relatório.
Report.applyTheme Aplique o tema do relatório.
Report.getFilters, Report.setFilters, Report.removeFilters Obter, definir e remover filtros de relatório.
Report.getPages Obtenha as páginas do relatório.
page.setActive Defina a página de relatório ativo.
Page.getFilters, Page.setFilters, Page.removeFilters Obter, definir e remover filtros de página.
Page.getVisuals Obter visuais de página.
Visual.getFilters, Visual.setFilters, Visual.removeFilters Obter, definir e remover filtros visuais.
Visual.getSlicerState, Visual.setSlicerState Obter e definir o estado da segmentação visual.