使用 Excel 2016 Power Query 执行条件内部连接

使用 Excel 2016 Power Query 执行条件内部连接

我在 Excel 2016 中有两个表格

  • 一张Vendor桌子和
  • 一张Transactions桌子。

我正在尝试做这样的事情但在 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 则为是 否则为否

然后过滤供应商匹配=是。

性能出奇的好。

相关内容