Otimizar modelos do DirectQuery com armazenamento no nível da tabela

Concluído

O DirectQuery é um modo de armazenamento em que o Power BI se conecta diretamente à fonte de dados. Trata-se de uma alternativa à importação de dados nas tabelas de modelo.

Captura de tela que mostra como usar a opção DirectQuery para obter dados.

Quando você usa o modo de armazenamento DirectQuery, os tempos de resposta da consulta dependem muito do desempenho da fonte de dados subjacente. Tempos de resposta de consulta lentos acarretarão uma experiência do usuário negativa e, nos piores cenários, as consultas podem atingir tempo limite. Além disso, o número de usuários que estão abrindo os relatórios a qualquer momento afetará a carga colocada sobre a fonte de dados. Por exemplo, se uma página de relatório tiver 20 visuais e dez pessoas abrirem essa página, 200 consultas (ou mais) serão enviadas à fonte de dados, pois cada visual emitirá uma ou mais consultas.

Infelizmente, o desempenho do modelo semântico não é afetado apenas pelo desempenho da fonte de dados subjacente, mas também por outros fatores incontroláveis, como:

  • Latência de rede: redes mais rápidas retornam dados mais rapidamente.
  • O desempenho do servidor da fonte de dados e quantas outras cargas de trabalho há nesse servidor. Por exemplo, leve em consideração as implicações de uma atualização do servidor acontecendo enquanto centenas de pessoas estão usando o mesmo servidor por motivos diferentes.

Por isso, o uso do DirectQuery oferece um risco à qualidade do desempenho do modelo. Para otimizar o desempenho nessa situação, você precisa ter controle sobre, ou acesso a, o banco de dados de origem.

Para obter informações mais detalhadas, consulte Diretrizes de modelo do DirectQuery no Power BI Desktop.

Implicações do uso do DirectQuery

Uma prática recomendada é importar dados em suas tabelas de modelo, mas a organização pode precisar usar o modo de armazenamento DirectQuery devido a um dos seguintes motivos (benefícios do DirectQuery):

  • Ele é indicado em casos nos quais os dados mudam com frequência e relatórios quase em tempo real são necessários.
  • Ele pode processar muitos dados sem a necessidade de pré-agregar.
  • Ele aplica restrições da soberania de dados para atender a requisitos legais.
  • Ele pode ser usado com uma fonte de dados multidimensional que contém medidas como SAP Business Warehouse (BW).

Se a organização desejar usar o DirectQuery, você deverá compreender claramente o comportamento e estar ciente das limitações. Assim, você estará em boas condições para otimizar o modelo do DirectQuery o máximo possível.

Comportamento das conexões do DirectQuery

Quando você usa o DirectQuery para se conectar aos dados no Power BI Desktop, essa conexão se comporta da seguinte maneira:

  • Ao usar inicialmente o recurso Obter Dados no Power BI Desktop, você selecionará a fonte. Se você se conectar a uma fonte relacional, poderá selecionar um conjunto de tabelas, e cada uma delas definirá uma consulta que retornará logicamente um conjunto de dados. Se selecionar uma fonte multidimensional, como SAP BW, você só poderá selecionar a fonte.
  • Quando você carrega os dados, nenhum dado é importado para o Power BI Desktop; somente o esquema é carregado. Quando você adiciona um visual a um relatório, as consultas são enviadas à fonte subjacente para recuperar os dados necessários. O tempo necessário para atualizar o visual depende do desempenho da fonte de dados subjacente.
  • Se alterações forem feitas nos dados subjacentes, elas não se refletirão imediatamente nos visuais existentes devido ao cache. Você precisa realizar uma atualização para ver essas alterações. As consultas necessárias são apresentadas para cada visual, e os visuais são atualizados adequadamente.
  • Quando você publica o arquivo do Power BI Desktop no serviço do Power BI, ele publica um modelo semântico. No entanto, nenhum dado é incluído nesse modelo semântico.
  • Quando você abre um relatório existente no serviço do Power BI (ou compila um novo), a fonte subjacente é consultada novamente para recuperar os dados necessários. Dependendo da localização da fonte original, talvez seja necessário configurar um gateway de dados local.
  • Você pode fixar visuais, ou páginas de relatórios inteiras, como blocos de painel. Os blocos são atualizados automaticamente de acordo com uma agenda, por exemplo, a cada hora. Você pode controlar a frequência dessa atualização para atender aos requisitos. Quando você abre um painel, os blocos refletem os dados no momento da atualização mais recente e podem não incluir as alterações feitas mais recentemente na fonte de dados subjacente. Você sempre pode atualizar um painel aberto para garantir que ele esteja atualizado.

Limitações de conexões do DirectQuery

O uso do DirectQuery pode ter implicações negativas. As limitações variam de acordo com a fonte de dados específica usada. Você deve levar em consideração os seguintes aspectos:

  • Desempenho – conforme discutido anteriormente, a experiência geral do usuário depende muito do desempenho da fonte de dados subjacente.
  • Segurança – se você usar várias fontes de dados em um modelo do DirectQuery, será importante compreender como os dados se movem entre as fontes de dados subjacentes, além das implicações de segurança associadas. Você também deve identificar se regras de segurança são aplicáveis aos dados na fonte subjacente, pois, no Power BI, todos os usuários podem ver esses dados.
  • Transformação de dados – em comparação com dados importados, os dados originados do DirectQuery têm limitações quando o assunto é aplicação das técnicas da transformação de dados com o Power Query. Por exemplo, se você se conectar a uma fonte OLAP, como SAP BW, não será possível fazer nenhuma transformação; todo o modelo externo é obtido da fonte de dados. Se quiser fazer alguma transformação nos dados, você precisará fazer isso na fonte de dados subjacente.
  • Modelagem – algumas das funcionalidades de modelagem que você tem com dados importados não estão disponíveis ou ficam limitados.
  • Relatórios – quase todas as funcionalidades de relatório que você tem com dados importados também são compatíveis com os modelos do DirectQuery, desde que a fonte subjacente ofereça um nível de desempenho indicado.

Para obter informações mais detalhadas sobre as limitações do uso do DirectQuery, consulte Implicações de uso do DirectQuery.

Agora, sabendo como o DirectQuery funciona e conhecendo suas limitações, você pode tomar medidas para melhorar o desempenho.

Otimizar o desempenho

Continuando no cenário Tailwind Traders, durante a revisão do modelo semântico, você descobre que o modelo usa o DirectQuery para se conectar aos dados de origem. Esse uso do DirectQuery é o motivo pelo qual os usuários estão sofrendo com um desempenho insatisfatório do relatório. Está demorando muito tempo para carregar as páginas do relatório, e as tabelas não estão sendo atualizadas com rapidez suficiente quando determinadas seleções são feitas. Você precisa tomar uma medida para otimizar o desempenho do modelo do DirectQuery.

Você pode examinar as consultas enviadas para a origem subjacente e tentar identificar o motivo do desempenho insatisfatório da consulta. Em seguida, você pode fazer alterações no Power BI Desktop e na fonte de dados subjacente para otimizar o desempenho geral.

Otimizar dados no Power BI Desktop

Mesmo tendo otimizado a fonte de dados o máximo possível, você ainda poderá executar uma ação no Power BI Desktop usando o Performance Analyzer, isolando as consultas para validar planos de consulta.

Você pode analisar a duração das consultas que estão sendo enviadas para a fonte subjacente a fim de identificar as consultas cujos carregamentos estão demorando muito. Em outras palavras, você pode identificar onde há gargalos.

Não é preciso adotar uma abordagem especial ao otimizar um modelo do DirectQuery; você pode aplicar as mesmas técnicas de otimização que usa para ajustar os dados importados. Por exemplo, você pode reduzir o número de visuais na página do relatório ou reduzir o número de campos usados em um visual. Você também pode remover colunas e linhas desnecessárias.

Para obter diretrizes mais detalhadas sobre como otimizar uma consulta do DirectQuery, consulte: Diretrizes do modelo do DirectQuery no Power BI Desktop e Diretrizes de uso do DirectQuery bem-sucedido.

Otimizar a fonte de dados subjacente (banco de dados conectado)

A primeira parada é a fonte de dados. Você precisa ajustar o banco de dados de origem o máximo possível, porque qualquer coisa que você fizer para melhorar o desempenho desse banco de dados de origem, por sua vez, vai melhorar o DirectQuery do Power BI. As ações executadas no banco de dados trarão os maiores benefícios.

Leve em consideração do uso das seguintes práticas do banco de dados padrão que se aplicam à maioria das situações:

  • Evite o uso de colunas calculadas complexas, pois a expressão de cálculo será inserida nas consultas de origem. É mais eficiente enviar a expressão de volta à fonte por push, pois isso evita o pushdown. Você também pode levar em consideração a adição das colunas de chave alternativa a tabelas de dimensão.
  • Examine os índices da tabela de origem e verifique se a indexação atual é ideal. Se você precisar criar índices, certifique-se de que eles sejam apropriados.

Consulte os documentos de diretrizes da fonte de dados e implemente as recomendações de desempenho.

Personalizar as opções de redução da consulta

O Power BI Desktop dá a opção de enviar menos consultas e desabilitar determinadas interações que podem resultar em uma experiência insatisfatória quando as consultas resultantes demoram muito para ser executadas. A aplicação dessas opções impede que as consultas acessem continuamente a fonte de dados, o que deve melhorar o desempenho.

Neste exemplo, você edita as configurações padrão para aplicar as opções da redução de dados disponíveis ao relatório. Você acessa as configurações selecionando Arquivo>Opções e configurações>Opções, rolando a página para baixo e selecionando a opção Redução da consulta.

As seguintes opções de redução da consulta estão disponíveis:

  • Reduzir o número de consultas enviadas por – por padrão, todos os visuais interagem com todos os outros visuais. A marcação dessa caixa de seleção desabilita a interação padrão. Você pode escolher quais visuais interagem entre si usando o recurso Editar interações.

  • Segmentações – por padrão, a opção Aplicar instantaneamente alterações feitas na segmentação permanece selecionada. Para forçar os usuários do relatório a aplicar as alterações feitas na segmentação manual, selecione a opção Adicionar um botão Aplicar a cada segmentação para aplicar alterações quando você estiver pronto.

  • Filtros – por padrão, a opção Aplicar instantaneamente alterações feitas no filtro básico permanece selecionada. Para forçar os usuários de relatório a aplicar manualmente alterações no filtro, selecione uma das opções alternativas:

    • Adicionar um botão Aplicar a todos os filtros básicos para aplicar alterações quando você estiver pronto
    • Adicionar um botão Aplicar ao painel de filtragem para aplicar alterações de uma só vez (versão preliminar)

A captura de tela mostra as configurações de redução da consulta de acesso.