top of page

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