Referenciar consultas do Power Query

Este artigo destina-se aos modeladores de dados que trabalham com o Power BI Desktop. Ele fornece orientação quanto à definição de consultas do Power Query que referenciam outras consultas.

Vamos esclarecer o que isso significa: Quando uma consulta referencia uma segunda consulta, é como se as etapas da segunda consulta fossem combinadas e executadas antes das etapas da primeira consulta.

Considere várias consultas: A Consulta1 usa fonte de dados de um serviço Web, e sua carga está desabilitada. A Consulta2, Consulta3 e Consulta4 referenciam a Consulta1, e suas saídas são carregadas no modelo de dados.

Diagram showing the Query Dependencies view, displaying queries described in the previous paragraph.

Quando o modelo de dados é atualizado, geralmente se pressupõe que o Power Query recupera o resultado da Consulta1, que é reutilizado pelas consultas referenciadas. Esse pensamento está incorreto. Na verdade, o Power Query executa a Consulta2, a Consulta3 e a Consulta4 separadamente.

Você pode considerar que a Consulta2 tem as etapas da Consulta1 inseridas nela. Esse também é o caso da Consulta3 e Consulta4. O diagrama a seguir apresenta uma visão mais clara de como as consultas são executadas.

Diagram showing a modified version of the Query Dependencies view, displaying Query 2, Query 3, and Query 4.

A Consulta1 é executada três vezes. As várias execuções podem resultar em uma lentidão na atualização de dados e um impacto negativo na fonte de dados.

O uso da função Table.Buffer na Consulta1 não eliminará a recuperação de dados adicional. Essa função armazena em buffer uma tabela na memória e a tabela armazenada em buffer só pode ser usada dentro da mesma execução de consulta. Portanto, no exemplo, se a Consulta1 for armazenada em buffer quando a Consulta2 for executada, os dados armazenados em buffer não poderão ser usados quando a Consulta3 e a Consulta4 forem executadas. Elas próprias armazenarão os dados em buffer duas vezes mais. (Esse resultado poderia, na verdade, ampliar o desempenho negativo, pois a tabela será armazenada em buffer para cada consulta referenciada.)

Observação

A arquitetura de cache do Power Query é complexa e não é o foco deste artigo. O Power Query pode armazenar em cache os dados recuperados de uma fonte de dados. No entanto, quando ele executa uma consulta, pode recuperar os dados da fonte de dados mais de uma vez.

Recomendações

Em geral, recomendamos que você referencie consultas para evitar a duplicação de lógica nas suas consultas. No entanto, conforme descrito neste artigo, essa abordagem de design pode contribuir para a lentidão das atualizações de dados e para a sobrecarga das fontes de dados.

Em vez disso, recomendamos que você crie um fluxo de dados. O uso de um fluxo de dados pode melhorar o tempo de atualização de dados e reduzir o impacto em suas fontes de dados.

Você pode criar o fluxo de dados para encapsular as transformações e os dados de origem. Como o fluxo de dados é um armazenamento persistente de dados no serviço do Power BI, sua recuperação de dados é rápida. Assim, mesmo quando as consultas referenciadas resultam em várias solicitações do fluxo de dados, os tempos de atualização de dados podem ser melhorados.

No exemplo, se a Consulta1 for reformulada como uma entidade de fluxo de dados, a Consulta2, a Consulta3 e a Consulta4 poderão usá-la como uma fonte de dados. Com esse design, a entidade originada pela Consulta1 será avaliada apenas uma vez.

Para obter mais informações relacionadas a este artigo, confira os seguintes recursos: