Usando o Excel 2016 Power Query para executar a junção condicional interna

0

Eu tenho duas tabelas no Excel 2016, uma tabela de fornecedores e uma tabela de transações. Eu estou tentando fazer algo parecido com isso do SQL, mas no Formal Language (M) do Power Query:

SELECT * FROM Transcations
INNER JOIN Vendor ON Vendor.Name LIKE '%' + Transactions.VendorName + '%'

É uma consulta simples em SQL. Mas, mesclagens no Excel parecem não permitir junções internas condicionais. Alguém pode ajudar com isso, M, código?

let
    Source = Table.NestedJoin(Transactions,{"VendorName"},Vendors,{"Name"},"Vendors",JoinKind.Inner)
in
    Source

Veja alguns dados de amostra:

Vendors
-------------------
Name, PeopleCount
-------------------
ACME, 35
Microapple, 2000
Happyworx, 62

Transactions
-------------------
TransactionID, VendorName, Amount
-------------------
1, Xaction: ACME, $19.50
2, Microapple 5/27 -- RYXTU, $32.75
3, Microapple 5/30 -- KJDIU, $7.23
4, Xaction: ACME, $22.32
5, Happyworx Store 7362, $3.23 

Essas tabelas precisam ser unidas em Transactions.VendorName LIKE '%' + Vendor.Name + '%' (se M tiver um delimitador curinga).

    
por Aaron 31.12.2017 / 07:53

1 resposta

0

Eu adicionaria uma coluna "Dummy Merge Key" a ambas as consultas, por exemplo, = 1. Então, eu começaria da Consulta de transações e adicionaria uma mesclagem com a consulta de fornecedores, correspondente à coluna "Chave de mesclagem de manequim". Em seguida, expanda todas as colunas de fornecedores.

Neste ponto, você tem uma "união cruzada" maciça de todas as linhas de transações cruzadas com todas as linhas de fornecedores. Não entre em pânico.

Eu adicionaria uma coluna Condicional para verificar seus critérios, por exemplo,

Vendedor combinado

= Se Vendors.Name Contiver VendorName, então Sim Não mais

Em seguida, Filtrar por fornecedor corresponde = Sim.

O desempenho é surpreendentemente bom.

    
por 16.01.2018 / 07:57