![使用 Excel 2016 Power Query 执行条件内部连接](https://linux22.com/image/1549739/%E4%BD%BF%E7%94%A8%20Excel%202016%20Power%20Query%20%E6%89%A7%E8%A1%8C%E6%9D%A1%E4%BB%B6%E5%86%85%E9%83%A8%E8%BF%9E%E6%8E%A5.png)
我在 Excel 2016 中有两个表格
- 一张
Vendor
桌子和 - 一张
Transactions
桌子。
我正在尝试做这样的事情sql但在 Power Query 的形式语言(M)中:
SELECT * FROM Transcations
INNER JOIN Vendor ON Vendor.Name LIKE '%' + Transactions.VendorName + '%'
这是 SQL 中的一个简单查询。但是,Excel 中的合并似乎不允许条件内连接。有人能帮忙解决这个吗,M,代码?
let Source =
Table.NestedJoin(Transactions,{"VendorName"},Vendors,{"Name"},"Vendors",JoinKind.Inner)
in
Source
以下是一些示例数据:
Table Vendors
| Name | PeopleCount |
| --------- | -------------- |
| ACME | 35 |
| Microapple | 2000 |
| Happyworx | 62 |
Table 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 |
这些表需要连接起来Transactions.VendorName LIKE '%' + Vendor.Name + '%' (if M has a wildcard delimiter)
。
答案1
我将为两个查询添加一个“虚拟合并键”列,例如 = 1。然后我将从交易查询开始,并添加与供应商查询的合并,匹配该“虚拟合并键”列。然后展开所有供应商列。
此时,您拥有大量“交叉连接”,所有交易行与所有供应商行交叉。不要惊慌。
然后我会添加一个条件列来检查你的条件,例如
供应商匹配
= 如果 Vendors.Name 包含 VendorName 则为是 否则为否
然后过滤供应商匹配=是。
性能出奇的好。