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:

Quer Aprender sobre Power Query?

Conheça nossa formação e tudo que você pode aprender com ela.

Mais conteúdos gratuitos para você!

Power Query

[ NO AR ] JOVI TALK

Por aqui falamos de tratamento de dados e automações, sempre focando nos analistas de negócio que desejam ganhar tempo nas suas atividades.

Leia mais

OPA, vejo que você é novo por aqui!

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

E ai FERA?!

Não vou atrapalhar tua leitura deste super artigo.

Só quero te dizer que por ser um visitante novo aqui no site, nosso sistema está programado para te enviar um cupom de desconto para a FORMAÇÃO POWER QUERY 2.0, que é um pacotão de cursos do JOVI, com mais de 300 horas de conteúdo.

Informe seus dados a seguir, que te enviaremos as instruções para resgate desse cupom exclusivo.

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

A ementa possui centenas de aulas, e resumimos em um painel de PowerBI o qual enviaremos a você.

Preencha seu nome e email que em instantes receberá a ementa completa deste pacote de cursos.

Formato Aceito: [+ código do pais] [código de área] [número]