Após ler o capítulo de conexões do livro Exam Ref 70–779 Analyzing and Visualizing Data by Using Microsoft Excel foi apresentado o conceito de Query Folding do Power Query.
O Power Query utiliza esse conceito para aumentar a sua performance no tratamento dos dados quando é conectado em um Banco de Dados SQL, pois ele traduz os steps criados através da linguagem M para linguagem SQL e manda esse SQL para o banco de dados processar e já retornar as informações compiladas, assim transferindo esse processamento para o banco de dados.
Após abrir o editor de consultas (Power Query) em um relatório que se conecta ao SQL Server vamos clicar com botão direito encima de um Step e após irá aparecer a opção de exibir a consulta nativa.
Após exibir a consulta nativa temos o código SQL que o Power Query está mandando para o Banco de dados.
Agora vamos visualizar a execução desse SQL no Banco de Dados
O primeiro passo é abrir o SQL Profiler (Nesse exemplo estou usando SQL Server, cada SGBD terá um sistema de Trace diferente)
Após iniciar o Sql Profiler vamos criar um new trace
Depois iremos conectar a mesma instância de banco de dados que se conectamos no nosso relatório
Após colocar o servidor e as credenciais irá aparecer essa tela para configurar as propriedades do nosso trace, vamos apenas clicar em Run.
Após iniciar o trace, vamos adicionar um novo step onde eu irei selecionar apenas as colunas PromotionKey, PromotionAlternateKey e EnglishPromotionName, após selecionar as colunas vou clicar em remover outras colunas.
Após criar esse step vamos visualizar nosso trace no SQL Profiler
Percebam que o power query mandou para o banco de dados um SELECT selecionando apenas as três colunas que nós mantemos na consulta
Com isso conseguimos visualizar essa query sendo executada no SQL Server e como o Power Query utiliza esse conceito para acelerar o tratamento de dados quando conectado em um banco de dados.
Referências
https://exceleratorbi.com.au/how-query-folding-works/
https://powerbi.microsoft.com/pt-br/blog/incremental-refresh-query-folding/
https://www.mssqltips.com/sqlservertip/3635/query-folding-in-power-query-to-improve-performance/
https://community.powerbi.com/t5/Desktop/Join-Types-not-supported-by-Query-Folding/td-p/482262