Performance

Query Folding no Power BI: o segredo por trás de um refresh rápido

18 Nov 2024 7 min de leitura

Se os refreshes do seu Power BI estão lentos ou falhando por memória, há uma boa chance de que o query folding não esteja funcionando. Esse é um dos conceitos mais importantes — e menos compreendidos — para quem quer refreshes rápidos e modelos eficientes.

O que é query folding

Query folding (ou “dobra de consulta”) é o mecanismo pelo qual o Power Query delega as transformações de volta para a fonte de dados em vez de processá-las localmente. Quando você aplica um filtro, remove colunas, agrupa ou renomeia campos no Power Query, o motor tenta traduzir essas etapas para a linguagem nativa da fonte — normalmente SQL — e executar lá, no servidor do banco.

Diagrama do motor Power Query mostrando o query folding traduzindo etapas M em consulta nativa enviada ao banco SQL
O Power Query traduz suas etapas (script M) em uma consulta nativa e envia o processamento para a fonte de dados.

Por que isso deixa o refresh mais rápido

Quando a transformação roda na fonte, o banco faz o trabalho pesado com seus índices e seu motor otimizado, e devolve ao Power BI apenas o resultado — tipicamente muito menos linhas. Isso reduz o volume trafegado pela rede, o uso de memória no refresh e o tempo total. Sem folding, a fonte devolve tudo e o Power Query processa linha a linha na sua máquina ou na capacidade, o que é muito mais caro.

Full folding, partial folding e no folding

Uma consulta pode ter três resultados possíveis:

Quais fontes suportam query folding

O folding só existe quando a fonte tem um motor de consulta capaz de receber comandos:

Como saber se uma etapa faz folding

No editor do Power Query, clique com o botão direito sobre uma etapa em Etapas Aplicadas e escolha Exibir Consulta Nativa (View Native Query). Se a opção aparecer e mostrar o SQL gerado, aquela etapa está fazendo folding. Se estiver acinzentada, o folding foi quebrado em algum ponto anterior.

O que costuma quebrar o query folding

A regra prática: deixe as etapas que fazem folding (filtrar, remover colunas, renomear, agrupar, mesclar tabelas da mesma fonte) no início, e só depois aplique as que quebram o folding.

Query folding e a atualização incremental

O folding é pré-requisito para uma política eficiente de atualização incremental. A atualização incremental usa os parâmetros RangeStart e RangeEnd para filtrar apenas a janela recente — e esse filtro só é eficiente se for empurrado para a fonte via folding. Por isso o Power BI avisa quando não consegue confirmar que a consulta faz folding:

Aviso do Power BI: não foi possível confirmar se a consulta M pode ser dobrada, não recomendado usar atualização incremental com consultas sem folding
Aviso do Power BI ao configurar atualização incremental sobre uma consulta que não faz folding.

Boas práticas para preservar o folding

Exemplo de relatório comercial em Power BI com múltiplos visuais exibido no Portal BI Embedded
Relatórios que abrem rápido começam na fonte: com query folding, o modelo chega leve ao Power BI.

Garantir o query folding é um dos passos que mais impactam a performance — e um dos primeiros que verificamos quando um ambiente Power BI/Fabric começa a ficar caro.

Perguntas frequentes

O que é query folding no Power BI?

É o mecanismo que faz o Power Query traduzir suas transformações (filtros, remoção de colunas, agrupamentos) para a linguagem nativa da fonte, normalmente SQL, e executá-las no próprio banco. Assim a fonte devolve menos dados e o refresh fica mais rápido.

Como sei se minha consulta está fazendo folding?

No editor do Power Query, clique com o botão direito em uma etapa nas Etapas Aplicadas e escolha “Exibir Consulta Nativa”. Se o SQL aparecer, a etapa faz folding. Se a opção estiver acinzentada, o folding foi quebrado antes dela.

Quais fontes suportam query folding?

Bancos relacionais com motor de consulta: SQL Server, Azure SQL, PostgreSQL, Snowflake, Redshift, BigQuery, SAP HANA, entre outros. Arquivos Excel, CSV, JSON e a maioria das APIs web não suportam folding.

Query folding tem relação com a atualização incremental?

Sim, é pré-requisito. A atualização incremental depende de o filtro por data (RangeStart/RangeEnd) ser empurrado para a fonte via folding. Sem folding, a incremental fica ineficiente e o próprio Power BI exibe um aviso.

PRS Tecnologia

Precisa de licenciamento Microsoft?

A PRS Tecnologia está há 10 anos no mercado fornecendo soluções Microsoft e é parceira oficial Microsoft há 7 anos. Fornecemos todos os licenciamentos — Power BI, Microsoft Fabric, Azure e Microsoft 365 — com condições especiais para sua empresa.

Conheça a PRS Tecnologia

Quer ver na prática?

Teste o Portal BI Embedded gratuitamente por 30 dias e descubra todas as funcionalidades.

Solicitar demonstração gratuita
Voltar ao blog Fale conosco