Posts

O Analisador de Desempenho do Power BI foi incluído a partir da atualização de Maio de 2019 no Power BI Desktop. Com essa ferramenta o processo de verificar o que está sendo consumido em tempo de processamento no Power BI ficou simples e fácil.

Pelo analisador de desempenho teremos resultados em relação ao processamento das fórmulas DAX, renderização dos visuais e gráficos, segmentação de dados, etc.

Para habilitar o Analisador de Desempenho do Power BI vá na faixa de opções Exibição e então selecione a caixa de seleção correspondente.

Exibir o analisador de performance do power bi

Clique no link Baixar arquivo exemplo do Analisador de Desempenho do Power BI. Utilizaremos este arquivo para trabalhar todos os exemplos citados neste artigo.

Para maior detalhes de como utilizar o analisador de performance, leia a documentação da Microsoft sobre o assunto.

Executando o Analisador de Desempenho do Power BI

Execute os passos abaixo (exatamente na sequência indicada) e veja os resultados gerados pelo Analisador de Desempenho.

  1. Abra o arquivo .pbix, não altere a página atual, se mantenha na página “Capa” em que o arquivo foi aberto.
  2. Ative a guia do Analisador de Performance do Power BI (conforme figura acima);
  3. Clique em Iniciar gravação nesta guia.

Analisador de Performance Iniciar

  1. Agora mude para a página “Vendas”.
  2. A guia do Analisador de desempenho do Power BI irá avaliar o tempo de carregamento em milissegundos para cada um dos visuais do relatório. Perceba que o visual “Matriz” é o mais lento. Os tempos na figura abaixo podem variar conforme o equipamento em que o Power BI Desktop é executado. A maioria dos visuais demoram cerca de 1,5 segundos para carregar.

Guia do analisador resultado

  1. Agora clique em “Atualizar visuais” e veja o resultado desta segunda execução. Role a barra para baixo para ver. O visual “Matriz” ainda é o mais lento, mas perceba que, de forma geral, todos os visuais reduziram o tempo de execução.

Guia do analisador de performance do power bi

Agora temos duas execuções para os mesmos visuais na guia do Analisador de Performance do Power BI. O primeiro grupo é relacionado à mudança de página e após isso o carregamento dos visuais. Boa parte dos visuais, na primeira execução, carregam em 1,5 segundos. Selecione um deste visuais e veja que a maior parte do tempo gasto é com a seção “Outro”.

Detalhe do analisador

Avaliando os itens do analisador de performance do Power BI

A duração de carregamento para cada visual é dividida em três categorias:

  • Consulta DAX: cada visual gera um ou mais procedimentos de avaliação em um simples requerimento enviado à “engine” Tabular (responsável pelos cálculos no Power BI). O tempo apresentado nesta linha é o resultado do que se passou entre o requerimento para a “engine” e a primeira linha de resultado recebida pelo Power BI. Alguns visuais (caixas de texto, por exemplo) não geram nenhuma consulta DAX.
  • Exibição de visual: este é o tempo necessário para renderizar o visual. Este tempo considera apenas o que foi gasto pelo Power BI Desktop.
  • Outro: este é o tempo gasto esperando as outras operações serem concluídas. Geralmente é o tempo de sincronização entre os diferentes visuais na mesma página e não deve ser considerado como um gargalo de tempo. É gerado pelo tempo de espera pelas outras operações pendentes rodadas em outros visuais.

Comparando o tempo de duração da primeira execução da página de vendas com a segunda execução vemos que esta última teve uma duração menor, basicamente por conta do tempo de “Outro” reduzido. O motivo para isso é que na primeira execução, os visuais e consultas requerem uma nova alocação de estrutura de memória. Isto não pode ser reduzido ao menos que seja diminua os visuais ou o tamanho das tabelas do modelo. Devido a isso, o foco para resolver os gargalos deve ser dado na duração de carregamento após clicar em “Atualizar visuais”. Então, o relatório do analisador de performance do Power BI tem mais relevância após realizar esta segunda execução.

Melhorando o desempenho nos Visuais

Se o tempo de carregamento dos visuais é alto, considere reduzir a quantidade de dados incluídos neste visual. Exemplo: reduzir o número de dimensões aplicados num gráfico ou mapa. Ou considere substituir o visual por outro. É normal que os visuais customizados (baixados do marketplace) levem mais tempo de carregamento que os visuais nativos do Power BI.

Cada visual tem seu impacto no processamento e uso de memória. A presença de muitos visuais numa única página pode afetar a performance do relatório. Isto porque a renderização de cada um deles é uma sequência numa linha única de execução.

Veja na próxima figura que uma simples Caixa de Texto necessita de cerca de 75 milisegundos para carregar o visual. Assim, esperar vários segundos para carregar uma página com vários visuais é bem comum.

Caixa de Texto no analisador de performance do Power BI

Resolvendo o Problema de Lentidão na Consulta DAX

As Consultas DAX com um tempo de execução alto merecem ser investigadas. O motivo pode ser uma medida lenta, um modelo de dados lento, ou uma fonte de dados lenta (acontece muito quando utilizado DirectQuery). Vemos na lista avaliada que o visual mais lento é a Matriz. Pela figura abaixo entendemos que o motivo é uma Consulta DAX muito lenta.

Consulta DAX no analisador

Esta consulta chama a medida “Qtde Clientes” que tem a seguinte sintaxe:

Qtde Clientes =
CALCULATE (
    DISTINCTCOUNT ( Vendas[Cod_Cliente] );
    FILTER ( Vendas; Vendas[Qtde] > 0 )
)

O intuito deste artigo não é explicar porque esta medida especificamente é lenta. O fato é que utilizar filtros de tabela combinado com a função DISTINCTCOUNT gera uma ineficiência para a consulta. Se modificarmos esta medida utilizando uma coluna semanticamente equivalente irá trazer um resultado para o cálculo bem mais otimizado. Veja como seria a melhor medida para esta utilização.

Qtde Clientes =
CALCULATE (
    DISTINCTCOUNT ( Vendas[Cod_Cliente] );
    KEEPFILTERS( Vendas[Qtde] > 0 )
)

Atualize os visuais após mudar a medida e veja o quanto este visual melhorou no tempo de execução. Agora a “Consulta DAX” leva apenas 20 milisegundos para rodar.

Consulta DAX otimizada

Com isso o tempo de “Outro” aumenta, visto que agora este não é o processo que mais demora nesta página.

A Seção “Outro” pode ser ignorada para efeitos de análise do tempo de execução. Para a otimização do relatório mantenha o foco nas melhorias da Consulta DAX e Exibição de visual. Melhorando estes dois o Outro consequentemente irá melhorar no relatório como um todo, visto que os processos que mais levam tempo estão sendo trabalhados.

Compartilhe este conteúdo nas suas redes sociais (utilize os botões abaixo) e ajude seus colegas a compreender melhor sobre o assunto. Ajude-nos também a espalhar bons conteúdos sobre o Power BI.

Tem dúvidas? Nos pergunte! Utilize a sessão de comentários deste artigo logo abaixo.

Até a próxima!