top of page
Foto do escritorAmanda Nascimento

Combinar dados entre tabelas com Power Query



Sabe quando você precisa combinar dados entre duas tabelas duplicando as linhas da tabela de dados de acordo com a quantidade de e-mails apresentados para cada cliente?

Neste exemplo utilizarei a coluna cod_cliente como referência (chave) para conectar as duas tabelas.

No Power Query dentro do Power BI podemos mesclar as consultas.

Na imagem acima contem a "tabela de dados" que é a minha base "final" porem sem a coluna com os e-mails correspondentes dos clientes e "tabela de emails" com os emails de todos os clientes, inclusive de clientes que não preciso da informação no momento como o cliente D, ou seja, se um cliente existir apenas na tabela de e-mails e não na de dados (principal), ele não deverá ser incluído no resultado final esperado.



◼ Primeiro passo é carregar as duas planilhas dentro do power query.








◼ Depois que as tabelas forem carregadas, o relacionamento (cod_cliente) será detectado automático pelo Power Bi (a menos que você desabilite isso)



◼ Agora vamos criar uma terceira consulta (nosso resultado). Para isso, clique em Página Inicial (dentro do editor do Power Query), Nova Fonte, Consulta Nula




◼ Em editor Avançado da Consulta1 (resultado) podemos utilizar o script abaixo:


let

// Carregar a tabela de dados (etapa final da sua consulta de dados)

TabelaDados = #"Tabela de dados", // Nome correto da tabela de dados


// Carregar a tabela de emails que já foi carregada corretamente

TabelaEmails = emails, // Nome da consulta de emails


// Realizar a mesclagem (join) das tabelas com base no COD_CLIENTE

MesclarTabelas = Table.NestedJoin(TabelaDados, {"COD_CLIENTE"}, TabelaEmails, {"COD_CLIENTE"}, "Emails", JoinKind.LeftOuter),

// Expandir a coluna de e-mails, replicando as linhas da tabela de dados

ExpandirEmails = Table.ExpandTableColumn(MesclarTabelas, "Emails", {"EMAIL"}, {"EMAIL"}),


// Remover registros sem emails (opcional, remova esta linha se quiser manter os clientes sem email)

RemoverSemEmails = Table.SelectRows(ExpandirEmails, each [EMAIL] <> null)

in

RemoverSemEmails



bottom of page