Verwenden der Excel 2016 Power Query zum Durchführen eines bedingten Inner Join

810
Aaron

Ich habe zwei Tabellen in Excel 2016, eine Lieferantentabelle und eine Transaktionstabelle. Ich versuche, etwas von SQL aus zu machen, aber in Formalsprache (M) von Power Query:

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

Es ist eine einfache Abfrage in SQL. Zusammenhänge in Excel scheinen jedoch keine bedingten inneren Verknüpfungen zuzulassen. Kann jemand dabei helfen, M, Code?

Lassen Source = Table.NestedJoin (Transaktionen, {"VendorName"}, Vendors, {"Name"}, "Vendors", JoinKind.Inner) im Quelle 

Hier einige Beispieldaten:

Anbieter ------------------- Name, PeopleCount ------------------- ACME, 35 Microapple, 2000 Happyworx, 62  Transaktionen ------------------- Transaktions-ID, Lieferantenname, Betrag ------------------- 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  

Diese Tabellen müssen in Transactions.VendorName LIKE '%' + Vendor.Name + '%' verknüpft werden (wenn M ein Platzhalterzeichen hat).

0
Könnten Sie Beispieldaten hochladen? Und für Join the Tables, welches Schlüsselfeld Sie verwenden möchten? Rajesh S vor 6 Jahren 0

1 Antwort auf die Frage

0
Mike Honey

Ich würde beiden Abfragen eine "Dummy Merge Key" -Spalte hinzufügen, z. B. = 1. Dann würde ich von der Transaktionsabfrage starten und eine Zusammenführung mit der Händlerabfrage hinzufügen, die zu dieser Spalte "Dummy Merge Key" passt. Erweitern Sie dann alle Spalten der Anbieter.

Zu diesem Zeitpunkt haben Sie einen massiven "Cross-Join" aller Transaction-Reihen, die mit allen Vendors-Reihen gekreuzt wurden. Keine Panik

Ich würde dann eine Bedingungsspalte hinzufügen, um Ihre Kriterien zu überprüfen, z

Anbieter abgestimmt

= Wenn Vendors.Name VendorName enthält, dann Ja Nein Nein

Dann filtern Sie nach Vendor Matched = Ja.

Die Leistung ist überraschend gut.