Partilhar via


Solucionar problemas de modelos DirectQuery no Power BI Desktop

Este artigo ajuda a diagnosticar problemas de desempenho com os modelos de dados DirectQuery do Power BI que você desenvolve no Power BI Desktop ou no serviço do Power BI. O artigo também descreve como obter informações detalhadas para ajudá-lo a otimizar relatórios.

Você deve iniciar qualquer diagnóstico de problemas de desempenho no Power BI Desktop, em vez de no serviço do Power BI ou no Servidor de Relatório do Power BI. Os problemas de desempenho geralmente dependem do nível de desempenho da fonte de dados subjacente. Você pode identificar e diagnosticar esses problemas com mais facilidade no ambiente isolado do Power BI Desktop, sem envolver componentes como um gateway local.

Se não encontrar os problemas de desempenho no Power BI Desktop, pode concentrar a sua investigação nas especificidades do relatório no serviço do Power BI.

Você também deve tentar isolar os problemas em um visual individual antes de examinar muitos elementos visuais em uma página.

Analisador de Desempenho

O Performance Analyzer é uma ferramenta útil para identificar problemas de desempenho durante todo o processo de solução de problemas. Se você puder identificar um único visual lento em uma página no Power BI Desktop, poderá usar o Analisador de Desempenho para determinar quais consultas o Power BI Desktop envia para a fonte subjacente.

Você também pode visualizar rastreamentos e informações de diagnóstico que as fontes de dados subjacentes emitem. Esses rastreamentos podem conter informações úteis sobre os detalhes de como a consulta foi executada e como melhorá-la.

Mesmo sem vestígios da origem, você pode exibir as consultas enviadas pelo Power BI, juntamente com seus tempos de execução.

Nota

Para fontes baseadas em SQL do DirectQuery, o Performance Analyzer mostra consultas apenas para fontes de dados SQL Server, Oracle e Teradata.

Arquivo de rastreamento

Por padrão, o Power BI Desktop registra eventos durante uma determinada sessão em um arquivo de rastreamento chamado FlightRecorderCurrent.trc. Você pode encontrar o arquivo de rastreamento da sessão atual na pasta AppData para o usuário atual, em <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

As seguintes fontes de dados do DirectQuery gravam todas as consultas que o Power BI as envia para o arquivo de rastreamento. O log pode oferecer suporte a outras fontes do DirectQuery no futuro.

  • SQL Server
  • Base de Dados SQL do Azure
  • Azure Synapse Analytics (anteriormente SQL Data Warehouse)
  • Oracle
  • Teradata
  • SAP HANA

Para aceder facilmente à pasta do ficheiro de rastreio no Power BI Desktop, selecione Opções de Ficheiro>e Opções de definições> e, em seguida, selecione Diagnóstico.

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

Em Coleção de Despejo de Falha, selecione o link Abrir pasta de despejo/rastreamentos para abrir a <pasta User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

Navegue até a pasta pai dessa pasta e abra a pasta AnalysisServicesWorkspaces , que contém uma subpasta de espaço de trabalho para cada instância aberta do Power BI Desktop. Os nomes das subpastas têm sufixos inteiros, como AnalysisServicesWorkspace2058279583.

Cada pasta AnalysisServicesWorkspace inclui uma subpasta Data que contém o arquivo de rastreamento FlightRecorderCurrent.trc para a sessão atual do Power BI. Esta pasta desaparece quando a sessão associada do Power BI Desktop termina.

Você pode abrir os arquivos de rastreamento usando a ferramenta SQL Server Profiler, que pode ser obtida como parte do download gratuito do SQL Server Management Studio (SSMS). Depois de baixar e instalar o SQL Server Management Studio, abra o SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Para abrir um arquivo de rastreamento:

  1. No SQL Server Profiler, selecione Arquivo de Rastreamento de Abertura>de Arquivo.>

  2. Navegue até ou insira o caminho para o arquivo de rastreamento para a sessão atual do Power BI, como <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, e abra FlightRecorderCurrent.trc.

O SQL Server Profiler exibe todos os eventos da sessão atual. A captura de tela a seguir destaca um grupo de eventos para uma consulta. Cada grupo de consulta tem os seguintes eventos:

  • A Query Begin e evento, que representam o início e Query End o fim de uma consulta DAX gerada pela alteração de um visual ou filtro na interface do usuário do Power BI ou pela filtragem ou transformação de dados no Editor do Power Query.

  • Um ou mais pares de e DirectQuery End eventos, que representam consultas enviadas para a fonte de DirectQuery Begin dados subjacente como parte da avaliação da consulta DAX.

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

Várias consultas DAX podem ser executadas em paralelo, para que eventos de grupos diferentes possam intercalar. Você pode usar o valor do ActivityID para determinar quais eventos pertencem ao mesmo grupo.

As seguintes colunas também são de interesse:

  • TextData: O detalhe textual do evento. Para Query Begin e Query End eventos, o detalhe é a consulta DAX. Para DirectQuery Begin e DirectQuery End eventos, o detalhe é a consulta SQL enviada para a fonte subjacente. O valor TextData para o evento selecionado no momento também aparece no painel na parte inferior da tela.
  • EndTime: A hora em que o evento foi concluído.
  • Duração: a duração, em milissegundos, necessária para executar a consulta DAX ou SQL.
  • Erro: Se ocorreu um erro, caso em que o evento também é exibido em vermelho.

A imagem anterior estreita algumas das colunas menos interessantes, para que você possa ver as colunas mais interessantes mais facilmente.

Siga esta abordagem para capturar um rastreamento para ajudar a diagnosticar um possível problema de desempenho:

  1. Abra uma única sessão do Power BI Desktop para evitar a confusão de várias pastas de espaço de trabalho.

  2. Faça o conjunto de ações de interesse no Power BI Desktop. Inclua mais algumas ações, para garantir que os eventos de interesse sejam liberados no arquivo de rastreamento.

  3. Abra o SQL Server Profiler e examine o rastreamento. Lembre-se de que fechar o Power BI Desktop exclui o arquivo de rastreamento. Além disso, outras ações no Power BI Desktop não aparecem imediatamente. Você deve fechar e reabrir o arquivo de rastreamento para ver novos eventos.

Mantenha sessões individuais razoavelmente pequenas, talvez 10 segundos de ações, não centenas. Essa abordagem facilita a interpretação do arquivo de rastreamento. Há também um limite no tamanho do arquivo de rastreamento, portanto, para sessões longas, há uma chance de os primeiros eventos caírem.

Formato de consulta e subconsulta

O formato geral das consultas do Power BI Desktop é usar subconsultas para cada tabela de modelo à qual as consultas fazem referência. A consulta do Editor do Power Query define as consultas de subseleção. Por exemplo, suponha que você tenha as seguintes tabelas TPC-DS em um banco de dados relacional do SQL Server:

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

No visual do Power BI, a expressão a seguir define a SalesAmount medida:


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

A atualização do visual produz a consulta T-SQL na imagem a seguir. Há três subconsultas para as Web_Salestabelas , Iteme Date_dim modelo. Cada consulta retorna todas as colunas da tabela modelo, mesmo que o visual faça referência a apenas quatro colunas.

Estas subconsultas sombreadas são a definição exata das consultas do Power Query. Esse uso de subconsultas não afeta o desempenho das fontes de dados suportadas pelo DirectQuery. Fontes de dados como o SQL Server otimizam as referências às outras colunas.

Uma razão pela qual o Power BI usa esse padrão é para que você possa definir uma consulta do Power Query para usar uma instrução de consulta específica. O Power BI usa a consulta conforme fornecido, sem uma tentativa de reescrevê-la. Esse padrão restringe o uso de instruções de consulta que usam CTEs (Common Table Expressions) e procedimentos armazenados. Não é possível usar essas instruções em subconsultas.

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

Desempenho do gateway

Para obter informações sobre como solucionar problemas de desempenho de gateway, consulte Solucionar problemas de gateways - Power BI.

Para obter mais informações sobre o DirectQuery, consulte os seguintes recursos:

Perguntas? Tente perguntar à Comunidade do Power BI