Power BI 通过 LIKE 子句连接两个表

Prz*_*min 2 m dax powerquery powerbi

如何在 Power BI 中使用 LIKE 子句连接两个表?假设我们有两个表:

+------------------+  +--------+
|    Messy_Name    |  |  Tag   |
+------------------+  +--------+
| red apple        |  | apple  |
| apple very tasty |  | banana |
| good apple green |  +--------+
| yellow banana    |            
| banana split     |            
+------------------+            
Run Code Online (Sandbox Code Playgroud)

我们希望将它们加入到 PBI M 或 DAX(最好是两者)中,模仿以下 SQL 查询:

select
  a.Messy_Name
 ,b.Tag
from FactTable a
outer apply
    (
    select top 1
     b.Tag
    from TagList b
    where a.Messy_Name like '%'+b.Tag+'%'
    order by b.Tag
    ) b
Run Code Online (Sandbox Code Playgroud)

所以期望的结果是:

+------------------+--------+
|    Messy_Name    |  Tag   |
+------------------+--------+
| red apple        | apple  |
| apple very tasty | apple  |
| good apple green | apple  |
| yellow banana    | banana |
| banana split     | banana |
+------------------+--------+
Run Code Online (Sandbox Code Playgroud)

因此,查询应该返回 TagList 表中的第一个 Tag,其中 Messy_Name 包含该 Tag。最终,这是一对一的关系。

Ale*_*son 6

要在 Power Query 中执行此操作,请使用此公式创建自定义列

List.Max(
    Table.SelectRows(Tags,
       (T) => Text.Contains([Messy_Name], T[Tag]))[Tag])
Run Code Online (Sandbox Code Playgroud)