Dobragem de consultas em consultas nativas
No Power Query, pode definir uma consulta nativa e executá-la na sua origem de dados. O artigo Importar dados de um banco de dados usando consulta de banco de dados nativo explica como fazer esse processo com várias fontes de dados. Mas, ao usar o processo descrito nesse artigo, sua consulta não aproveita nenhuma dobragem de consulta das etapas de consulta subsequentes.
Este artigo apresenta um método alternativo para criar consultas nativas em sua fonte de dados usando a função Value.NativeQuery e manter o mecanismo de dobragem de consulta ativo para as etapas subsequentes da consulta.
Nota
Recomendamos que você leia a documentação sobre dobragem de consulta e os indicadores de dobragem de consulta para entender melhor os conceitos usados ao longo deste artigo.
Conectores de dados suportados
O método descrito nas próximas seções se aplica aos seguintes conectores de dados:
- Amazon Redshift
- Dataverse (ao usar computação aprimorada)
- Google BigQuery
- PostgreSQL
- SAP HANA
- Snowflake
- SQL Server
Conectar-se ao destino a partir da fonte de dados
Nota
Para mostrar esse processo, este artigo usa o conector do SQL Server e o banco de dados de exemplo AdventureWorks2019. A experiência pode variar de conector para conector, mas este artigo mostra os fundamentos sobre como habilitar recursos de dobragem de consulta em consultas nativas para os conectores suportados.
Ao se conectar à fonte de dados, é importante que você se conecte ao nó ou nível em que deseja executar sua consulta nativa. Para o exemplo neste artigo, esse nó é o nível do banco de dados dentro do servidor.
Depois de definir as configurações de conexão e fornecer as credenciais para sua conexão, a caixa de diálogo de navegação para sua fonte de dados é aberta. A caixa de diálogo de navegação contém todos os objetos disponíveis aos quais você pode se conectar.
Nessa lista, você precisa selecionar o objeto onde a consulta nativa é executada (também conhecido como destino). Neste exemplo, esse objeto é o nível do banco de dados.
Na janela do navegador no Power Query, selecione e mantenha pressionado (ou clique com o botão direito do mouse) o nó do banco de dados na janela do navegador e selecione a opção Transformar Dados . Selecionar essa opção cria uma nova consulta da exibição geral do seu banco de dados, que é o destino que você precisa para executar sua consulta nativa.
Assim que a consulta chegar ao editor do Power Query, apenas o passo Origem deverá ser apresentado no painel Passos aplicados. Esta etapa contém uma tabela com todos os objetos disponíveis em seu banco de dados, semelhante a como eles foram exibidos na janela Navegador.
Usar a função Value.NativeQuery
O objetivo deste processo é executar o seguinte código SQL e aplicar mais transformações com o Power Query que podem ser dobradas de volta para a origem.
SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'
O primeiro passo foi definir o destino correto, que neste caso é o banco de dados onde o código SQL é executado.
Quando uma etapa tiver o destino correto, você poderá selecioná-la — neste caso, Origem em Etapas Aplicadas — e, em seguida, selecionar o botão fx na barra de fórmulas para adicionar uma etapa personalizada. Neste exemplo, substitua a Source
fórmula pela seguinte fórmula:
Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development' ", null, [EnableFolding = true])
O componente mais importante dessa fórmula é o uso do registro opcional para o quarto parâmetro da função que tem o campo de registro EnableFolding definido como true.
Nota
Você pode ler mais sobre a função Value.NativeQuery no artigo de documentação oficial.
Depois de inserir a fórmula, é exibido um aviso que exige que você habilite a execução de consultas nativas para sua etapa específica. Selecione continuar para que esta etapa seja avaliada.
Esta instrução SQL produz uma tabela com apenas três linhas e duas colunas.
Dobragem de consulta de teste
Para testar a dobragem da consulta, você pode tentar aplicar um filtro a qualquer uma das colunas e ver se o indicador de dobragem da consulta na seção de etapas aplicadas mostra a etapa como dobrada. Nesse caso, você pode filtrar a coluna DepartmentID para ter valores que não sejam iguais a dois.
Depois de adicionar esse filtro, você pode verificar se os indicadores de dobragem da consulta ainda mostram a dobragem da consulta acontecendo nesta nova etapa.
Para validar ainda mais qual consulta está sendo enviada para a fonte de dados, você pode selecionar e segurar (ou clicar com o botão direito do mouse) a etapa Linhas filtradas e selecionar a opção Exibir plano de consulta para verificar o plano de consulta para essa etapa.
No modo de exibição de plano de consulta, você pode ver que um nó com o nome Value.NativeQuery que tem um hiperlink Exibir Detalhes . Você pode selecionar esse hiperlink para exibir a consulta exata que está sendo enviada para o banco de dados do SQL Server.
A consulta nativa é encapsulada em torno de outra instrução SELECT para criar uma subconsulta do original. O Power Query faz o seu melhor para criar a consulta mais otimizada, dadas as transformações utilizadas e a consulta nativa fornecida.
Gorjeta
Para cenários em que você obtém erros porque a dobragem de consulta não foi possível, recomendamos que você tente validar suas etapas como uma subconsulta da consulta nativa original para verificar se pode haver conflitos de sintaxe ou contexto.