Visão geral da avaliação de consultas e dobramento de consultas no Power Query

O Power Query avalia uma consulta M para determinar os dados e transformações necessários para o seu resultado. Durante a avaliação, a query folding tenta traduzir transformações suportadas em operações que uma fonte de dados pode realizar. Transformações que não podem ser dobradas correm no motor Power Query.

O que é um script Power Query M?

Um script M, também chamado código M, é o conjunto de funções e sintaxe da linguagem de fórmulas Power Query M que o Power Query avalia para produzir um resultado de consulta. Cada consulta tem um script M, quer o Power Query o crie, o escreva no editor avançado ou o introduza numa consulta em branco.

Sugestão

Você pode pensar no script M como uma receita que descreve como preparar seus dados.

A forma mais comum de criar um script M é usando o editor Power Query. Por exemplo, quando se liga a uma fonte de dados, como uma base de dados do SQL Server, repare no lado direito do ecrã que existe uma secção chamada passos aplicados. Esta secção mostra todos os passos ou transformações usados na sua consulta. Neste sentido, o editor Power Query serve como uma interface para ajudar a criar o script M apropriado para as transformações que pretende e garante que o código que utiliza é válido.

Observação

O script M é usado no editor Power Query para:

  • Mostre a consulta como uma série de passos e permita-lhe criar ou modificar passos.
  • Mostrar uma vista de diagrama.

Captura de ecrã dos passos aplicados e da vista de pré-visualização de dados.

Neste exemplo do SQL Server, o painel de passos aplicados contém os seguintes passos:

  • Fonte: Faz a conexão com a fonte de dados. Neste caso, é uma ligação a uma base de dados do SQL Server.
  • Navegação: Navega para uma tabela específica no banco de dados.
  • Outras colunas removidas: seleciona quais colunas da tabela devem ser mantidas.
  • Linhas classificadas: classifica a tabela usando uma ou mais colunas.
  • Linhas superiores mantidas: filtra a tabela para manter apenas algumas linhas da parte superior da tabela.

Visualizar e editar um script M no Power Query

Este conjunto de nomes de passos é uma forma amigável de visualizar o script M que o Power Query criou para si. Pode ver o script completo em M de várias formas. No Power Query, selecione Editor Avançado no separador View. Também pode selecionar Editor Avançado no grupo de Consultas no separador Home. Em algumas versões do Power Query, também pode alterar a vista da barra de fórmulas para mostrar o script de consulta indo ao separador Visualizar e, a partir do grupo Layout, selecionar Script view>Query script.

Captura de tela contendo o script M completo e os nomes correspondentes das etapas aplicadas.

A maioria dos nomes que encontras no painel de Passos Aplicados também são usados tal como estão no script M. Nomeia os passos de uma consulta usando identificadores na linguagem M. Por vezes, caracteres extra surgem à volta dos nomes dos passos em M, mas esses caracteres não aparecem nos passos aplicados. Um exemplo é #"Kept top rows", que é categorizado como um identificador entre aspas devido a esses caracteres extras. Um identificador entre aspas permite que qualquer sequência de zero ou mais caracteres Unicode seja usada como identificador, incluindo palavras-chave, espaços em branco, comentários, operadores e pontuadores. Para saber mais sobre identificadores na linguagem M, consulte estrutura lexical.

Qualquer alteração que faça à sua consulta através do editor Power Query atualiza automaticamente o script M para a sua consulta. Por exemplo, se alterares o nome do passo Linhas superiores mantidas para 20 primeiras linhas, o nome também é alterado na vista de script da consulta.

Captura de tela do nome da etapa aplicada alterada para as 20 principais linhas, que também atualiza o script M.

Embora recomendemos que utilize o editor Power Query para criar todo ou a maior parte do script M por si, pode adicionar ou modificar manualmente partes do seu script M. Para saber mais, consulte a referência da língua M.

Neste artigo, o script M refere-se ao código Power Query M numa consulta, ao qual pode aceder através do editor avançado ou da vista do script de consulta na barra de fórmulas.

Como o Power Query avalia uma consulta M

O Power Query avalia um script M determinando a saída necessária e como a produzir. Para consultas que utilizam uma fonte de dados externa, a avaliação inclui pedir dados à fonte, processar quaisquer transformações que corram no motor Power Query e carregar o resultado para um destino.

O diagrama seguinte explora o processo que ocorre quando uma consulta é avaliada no Power Query.

Diagrama que mostra o caminho de uma avaliação de consulta desde o script M até ao resultado final.

  1. O script M, encontrado dentro do editor avançado, é submetido ao motor Power Query. Outras informações importantes também estão incluídas, como credenciais e níveis de privacidade da fonte de dados.
  2. O Power Query determina que dados precisam de ser extraídos da fonte de dados e envia um pedido à fonte de dados.
  3. A fonte de dados responde ao pedido do Power Query transferindo os dados solicitados para o Power Query.
  4. O Power Query recebe os dados recebidos da fonte de dados e realiza quaisquer transformações usando o motor Power Query, se necessário.
  5. O Power Query carrega o resultado transformado para um destino.

Observação

Este fluxo mostra uma consulta que lê de uma base de dados do SQL Server. Para uma consulta sem uma fonte de dados externa, o Power Query ainda avalia o script M e produz um resultado, mas as fases de pedido e transferência da fonte de dados não se aplicam.

Como o query folding otimiza o processamento de consultas

Quando o Power Query lê o seu script M, executa o script por um processo de otimização para avaliar a sua consulta de forma mais eficiente. Nesse processo, ele determina quais etapas (transformações) da sua consulta podem ser descarregadas para sua fonte de dados. Também determina quais os outros passos que precisam de ser avaliados usando o motor Power Query.

Este processo de otimização chama-se query folding. Query folding traduz as transformações M suportadas em operações que a fonte de dados pode realizar. O Power Query tenta executar o máximo possível da consulta na fonte de dados e avalia quaisquer transformações restantes no motor Power Query.

Importante

Todas as regras da linguagem de fórmulas Power Query M (também conhecida como linguagem M) são seguidas. Mais notavelmente, a avaliação preguiçosa desempenha um papel importante durante o processo de otimização. Neste processo, o Power Query compreende que transformações específicas da sua consulta precisam de ser avaliadas. O Power Query também entende que outras transformações não precisam de ser avaliadas porque não são necessárias no resultado da tua consulta.

Além disso, quando várias fontes estão envolvidas, o nível de privacidade de dados de cada fonte de dados é levado em consideração ao avaliar a consulta. Mais informações: Nos bastidores do Data Privacy Firewall

O diagrama a seguir demonstra as etapas que ocorrem nesse processo de otimização.

Diagrama que mostra o processo de otimização durante a avaliação da consulta.

  1. O script M, encontrado dentro do editor avançado, é submetido ao motor Power Query. Outras informações importantes também são fornecidas, como credenciais e níveis de privacidade da fonte de dados.
  2. O mecanismo de query folding submete pedidos de metadados para determinar as capacidades da fonte de dados, esquemas de tabelas, relações entre tabelas na fonte de dados e outros metadados.
  3. Com base nos metadados que recebe, o mecanismo de query folding determina que informações extrair da fonte de dados e que transformações devem ocorrer dentro do motor do Power Query. Envia instruções para outros dois componentes que recuperam dados da fonte de dados e transformam os dados recebidos no motor Power Query, se necessário.
  4. Depois de os componentes internos do Power Query receberem as instruções, o Power Query envia um pedido para a fonte de dados usando uma consulta de fonte de dados.
  5. A fonte de dados recebe o pedido do Power Query e transfere os dados para o motor Power Query.
  6. Depois de os dados estarem no Power Query, o motor de transformação do Power Query (também conhecido como motor de composição) efetua as transformações que não puderam ser reencaminhadas ou delegadas à origem de dados.
  7. O Power Query carrega o resultado transformado para um destino.

Observação

Dependendo das transformações e da fonte de dados usada no script M, o Power Query determina se deve transmitir ou armazenar os dados recebidos.

O que a dobragem de consultas faz no Power Query

O objetivo da dobragem de consulta é descarregar ou enviar o máximo da avaliação de uma consulta para uma fonte de dados que possa calcular as transformações da sua consulta.

O mecanismo de dobragem de consulta atinge esse objetivo traduzindo o script M para uma linguagem que sua fonte de dados possa interpretar e executar. Depois, envia a avaliação para a tua fonte de dados e envia o resultado dessa avaliação para o Power Query.

Esta operação frequentemente proporciona uma execução de consulta mais rápida do que extrair todos os dados necessários da sua fonte de dados e executar todas as transformações necessárias no motor Power Query.

Quando utiliza a experiência de obtenção de dados, o Power Query guia-o através do processo que, em última análise, lhe permite ligar-se à sua fonte de dados. Ao fazê-lo, Power Query utiliza uma série de funções na linguagem M categorizadas como funções de acesso a dados. Essas funções específicas usam mecanismos e protocolos para se conectar à sua fonte de dados usando uma linguagem que sua fonte de dados possa entender.

No caso das transformações após a função da fonte de dados, o mecanismo de query folding verifica se as pode delegar à fonte de dados em vez de as processar no motor do Power Query.

Importante

As funções da fonte de dados, normalmente apresentadas como a etapa de origem de uma consulta, consultam dados na fonte de dados na sua língua nativa. Para transformações após a função fonte de dados, o Power Query tenta a query folding apenas quando o conector e as transformações a suportam. O mecanismo pode traduzir e combinar transformações suportadas numa única consulta de fonte de dados.

Resultados da compactação de consultas no Power Query

Dependendo de como a consulta está estruturada, pode haver três resultados possíveis para o mecanismo de dobragem da consulta:

Resultado do query folding Processamento na fonte de dados Processamento no motor Power Query
Dobragem completa da consulta A fonte de dados processa todas as transformações das consultas. O processamento mínimo ocorre no motor Power Query.
Dobragem parcial de consulta A fonte de dados processa as transformações que o Power Query pode traduzir para a linguagem nativa de consulta. O motor Power Query processa as transformações restantes.
Sem delegação da consulta A fonte de dados devolve os dados de origem solicitados sem processar as transformações da consulta. O motor Power Query processa todas as transformações necessárias.

Fontes de dados que suportam query folding

O suporte à query folding depende do conector, da fonte de dados e das transformações na consulta. Os conectores para fontes de dados estruturadas com capacidades de processamento de consultas, como SQL Server e OData Feed, suportam normalmente o query folding. Fontes sem motor de consulta, como ficheiros CSV e Excel, não suportam query folding.

Durante a otimização, o motor Power Query pode reordenar as etapas da consulta. Utilizar uma fonte de dados com mais recursos de processamento e capacidades de dobragem de consultas pode reduzir os tempos de carregamento das consultas porque o processamento ocorre na fonte de dados em vez de no motor Power Query.

Verificar a dobragem de consultas no Power Query Online

No Power Query Online, utilize indicadores de dobragem de consulta junto aos passos aplicados para identificar que passos permitem dobragem. Também pode usar o plano de consulta para ver que operações correm na fonte de dados e quais são executadas no motor Power Query. Estas funcionalidades estão disponíveis apenas no Power Query Online.

Quando disponível, utilize o View Native Query ou o View data source query para inspecionar o pedido que o Power Query envia à fonte de dados. A disponibilidade depende do conector.