Joviano

Bem vindo ao

Blog do Jovi!

O blog do Jovi tem como objetivo ajudar você com suas dúvidas, além de expandir seu conhecimento através da informação.

Tabela Excel alimentando WHERE do SQL via Power Query

Olá FERAS da analise de dados! Hoje, vamos ver “uma Tabela Excel alimentando WHERE do SQL em uma consulta no Power Query“, e trazer somente os dados que nos interessam.

Parece complicado? Não se preocupe, eu estou aqui para guiá-lo passo a passo, como um Gandalf dos dados. Então, pegue seu café, ajuste sua cadeira e vamos nessa! BORA?!

A Missão

Imagine que você tem uma tabela Excel chamada FiltrarPedidos, com uma única coluna chamada Pedidos contendo os números 1, 2, 3.

menu do Excel mostrando uma tabela e o nome dela

Seu objetivo é levar essa tabela para o Power Query, converter os números em texto e incluí-los na cláusula WHERE do SQL de uma consulta à TabelaVendas.

Parece uma missão para o James Bond, certo? Mas com as ferramentas e técnicas certas nós vamos resolver isso em um piscar de olhos.

A Preparação

Primeiro, vamos preparar nosso terreno, mandando essa tabela para o PowerQuery, e para isso, basta clicar na tabela, e depois na guia DADOS, e por fim na opção “de Tabela / Intervalo

Menu do Excel mostrando como enviar os dados para o Power Query

Isso fará abrir o editor Power Query e você verá na barra de fórmulas do Power Query o comando “Excel.CurrentWorkbook“, que é a função que traz os dados do Excel para o Power Query. Na barra de fórmulas, o comando completo que aparecerá será:

let
    Source = Excel.CurrentWorkbook(){[Name="FiltrarPedidos"]}[Content]
in
    Source

Este comando está buscando a tabela “FiltrarPedidos” do nossa planilha atual e trazendo o conteúdo dela para o Power Query.

Agora estamos prontos para a próxima etapa!

Importantíssima etapa no Power Query

No Power Query, temos a tabela FiltrarPedidos. Vamos alterar o tipo de dado da coluna para texto (Transformar > Tipo de Dado > Texto).

= Table.TransformColumnTypes(Collab,{{"Pedidos", type text}})

Agora, vamos criar uma lista com os textos vindos dessa tabela (Transformar > Corverter em uma Lista)

power query converter coluna em lista

OK, essa lista servirá de base para que possamos usar nas duas soluções que vamos mostrar. Isso mesmo, duas soluções pois já vou te ensinar um macete quando o tipo de dados é diferente.

A conexão SQL bruta

No Power Query, vamos para Base de Dados > SQL Server.

Na janela que se abre, insira as informações do servidor e da base de dados (No nosso caso, o servidor é ‘localhost‘ e a base de dados é ‘EuAmoSQL‘)

No campo Instrução SQL, insira a consulta desejada, substituindo a cláusula WHERE pela lista de texto que criamos.

let
    Fonte= Sql.Database("localhost", "EuAmoSQL", [Query="SELECT * FROM TabelaVendas WHERE Pedidos IN (1, 2, 3)"])
in
    Fonte

Essa instrução fará que retornem os dados de TabelaVendas, cujos códigos dos Pedidos sejam 1, 2 ou 3.

Mas o que desejamos é automatizar IN (1, 2, 3). E, por isso mesmo que eu estou aqui!

Vamos fazer um ajuste no comando acima, incluindo uma varredura na Lista criada anteriormente, e criando uma coisa que eu chamo de “textão“:

let
    // implementação aqui------------------------
    // Texto vai retornar => '1,2,3'
    Textao = Text.Combine(FiltrarPedidos[Pedidos], ", "),
    // ------------------------------------------
    
    Fonte= Sql.Database("localhost", "EuAmoSQL", [Query="SELECT * FROM TabelaVendas WHERE Pedidos IN (1, 2, 3)"])
in
    Fonte

Clique em OK, e depois vá na etapa “Textao” e veja que ela está retornando os itens da lista concatenados e separados por vírgulas.
Agora falta pouco para a automação!

A automação da cláusula WHERE

Agora ficou molezinha, pois se temos um texto, podemos fazer uma colcha de retalhos, aproveitando o resultado da variável Textao.

let
    Textao = Text.Combine(FiltrarPedidos[Pedidos], ", "),
    Fonte= Sql.Database("localhost", "EuAmoSQL", [Query="SELECT * FROM TabelaVendas WHERE Pedidos IN (" &Textao& ")"])
in
    Fonte

Agora eu ganhei o teu coração, pois você já vai passar para o SQL o comando nativo como você deseja que seja executado, evitando assim esforço computacional do Servidor e do Terminal (Excel ou Power Bi serviço).

Mas calma, que apelando pela estética e pelo meu TOC, eu tenho mais uma pequena adaptação para fazer no comando acima, que é o isolamento do comando em uma variável especifica para poder copiar e testar execução direto no SSMS.

let
    Textao = Text.Combine(FiltrarPedidos[Pedidos], ", "),
    comando = "SELECT * FROM TabelaVendas WHERE Pedidos IN (" &Textao& ")",
    Fonte= Sql.Database("localhost", "EuAmoSQL", [Query=comando])
in
    Fonte

O possivel problema com tipos de dados

Pode acontecer de você tentar replicar o exemplo em seu ambiente e dar erro, pois o campo pode estar formatado como Texto e não número (muito comum), e se for esse o seu caso, basta alterarmos o Textao, incluindo um Prefixo e um Sufixo à cada ítem da lista.

let
    Textao = Text.Combine(List.Transform(Collab[Pedidos], each "'" & _ & "'"), ", "),
    comando = "SELECT * FROM TabelaVendas WHERE Pedidos IN (" &Textao& ")",
    Fonte= Sql.Database("localhost", "EuAmoSQL", [Query=comando])
in
    Fonte

Isso acontece também quando está tentando manusear campo cujo dado está registrado em tipo DATA no banco de dados SQL.

A Revisão do Vídeo

Agora que já dominamos a arte de usar o Excel para modificar a cláusula WHERE de uma consulta SQL com o Power Query, que tal revisar o vídeo que inspirou este post?

No vídeo “[POWER QUERY] Tabela Excel alimentando WHERE no SQL SERVER” do meu canal, você vai ver todo esse processo em ação.

Clica Aqui e assista, pois o vídeo é bem didático e vai ajudar a consolidar tudo que você aprendeu aqui.

Conclusão

E aí, curtiu ? Espero que sim!

Lembre-se, isso é apenas a ponta do iceberg. Para dominar o Power Query e se tornar um verdadeiro 007 dos dados, confira a FORMAÇÃO POWER QUERY 2.0. Vamos muito além do Power Query, explorando todas as suas possibilidades.

Então, não perca tempo e venha fazer parte do nosso time de super analistas de dados!

Forte Abraço do

logo joviano

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba conteúdos do Jovi!

Digite seu interesse abaixo:

Automação inteligente. Produtividade real.

Descubra a formação DataEvo e transforme tarefas repetitivas em eficiência estratégica

Mais conteúdos gratuitos para você!

Quem sabe AUTOMATIZAR, ganha mais $

OPA, vejo que você é novo por aqui!

Temos um presente de boas vindas para os amantes de Blog!

Você acessou o Blog do Joviano — e o sistema detectou sua primeira visita. Por isso, uma condição especial foi liberada:

Um cupom exclusivo com desconto na Formação DataEvo — uma trilha prática com mais de 300 horas voltada pra quem quer automatizar processos, ganhar tempo e subir de nível na carreira.

Essa oferta é única, temporária e só aparece agora.

Preencha seus dados e receba o link com o desconto direto no WhatsApp.

Após enviar, pode fechar essa janela, que seu presente já está em processamento.

Desconto exclusivo pra sua primeira visita.
Você tem 15 minutos pra liberar 10% de desconto na sua primeira formação com a DataEvo.

Preencha os campos abaixo e o cupom chega direto no seu WhatsApp.
Depois disso, o cupom fica válido por algumas horas, pra dar tempo para você analisar a proposta com calma.

Após enviar, pode fechar essa janela, que seu presente já está em processamento.

MUITO + que Power Query

Aprenda também SQL, DAX, Python e outras ferramentas que vão te fazer assumir posição de destaque em sua empresa.

Solicite a EMENTA CURRICULAR da FORMAÇÃO