首页 > 解决方案 > 合并来自匹配值的特定数据

问题描述

在电源查询中,我想将第 1 列与第 2 列中的特定值合并,但不是全部并匹配 team_id。知道如何实现这一目标吗?在 DAX 中,我可以使用 LOOKUPVALUE() 来做到这一点,但如何在电源查询中做到这一点?

表2

team_id   teamName
1         TeamA
3         TeamB
12        TeamC

表2

team_id       teamPlace      dateAdded
43            Amsterdam      11/01/2020
50            London         12/01/2020
1             New York       13/01/2020

表 1 或表 X

team_id   teamName      teamPlace
1         TeamA         New York
3         TeamB         null
12        TeamC         null

标签: excelpowerquery

解决方案


假设:

  • Table2我命名的您的第一张桌子(您的标签)Table.1
  • 你的第二张桌子(你的标签也是Table2)我已经命名了Table.2

并且您想获得第三张桌子(您的标签Table1 or TableX

您可以使用以下 PQ 代码使用左外连接类型进行嵌套连接。

let
    Source = Excel.CurrentWorkbook(){[Name="Table.1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"team_id", Int64.Type}, {"teamName", type text}}),
    Source2 = Excel.CurrentWorkbook(){[Name="Table.2"]}[Content],
    #"Changed Type2" = Table.TransformColumnTypes(Source2,{{"team_id",Int64.Type}, {"teamPlace", type text},{"dateAdded", type date}}),
    join = Table.NestedJoin(Source,"team_id", Source2, "team_id","teamPlace"),
    #"Expanded newCol" = Table.ExpandTableColumn(join, "teamPlace", {"teamPlace"}, {"teamPlace"})
in
    #"Expanded newCol"

在此处输入图像描述

从您下面的评论中,您似乎对创建合并表不感兴趣,而是对现有的第一个表添加一列。

为此,您需要做的就是在表格中添加一列,然后使用VLOOKUP公式。

使用上面的表命名方案,公式为:

=IFERROR(VLOOKUP([@[team_id]],Table.2,2,FALSE),"")

输出与上面相同


推荐阅读