代码之家  ›  专栏  ›  技术社区  ›  Przemyslaw Remin

LIKE子句上的幂BI连接两个表

  •  1
  • Przemyslaw Remin  · 技术社区  · 6 年前

    在Power-BI-on-LIKE子句中如何连接两个表?假设我们有两张桌子:

    +------------------+  +--------+
    |    Messy_Name    |  |  Tag   |
    +------------------+  +--------+
    | red apple        |  | apple  |
    | apple very tasty |  | banana |
    | good apple green |  +--------+
    | yellow banana    |            
    | banana split     |            
    +------------------+            
    

    我们希望将它们加入到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
    

    因此,期望的结果是:

    +------------------+--------+
    |    Messy_Name    |  Tag   |
    +------------------+--------+
    | red apple        | apple  |
    | apple very tasty | apple  |
    | good apple green | apple  |
    | yellow banana    | banana |
    | banana split     | banana |
    +------------------+--------+
    

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Alexis Olson    6 年前

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

    List.Max(
        Table.SelectRows(Tags,
           (T) => Text.Contains([Messy_Name], T[Tag]))[Tag])
    
        2
  •  1
  •   Alexis Olson    6 年前

    Tag 包含在 Messy_Name

    Tag = CALCULATE(
              MAX(Tags[Tag]), 
              FILTER(Tags,
                  SEARCH(Tags[Tag],
                      Messy[Messy_Name],1,0
                  ) > 0
              )
          )