我有两张表格(Excel 2010 中同一工作簿的两个工作表):
结果应如下所示:
我的 SQL 代码运行良好:
SELECT table_2.ID, table_1.value_1, table_2.value_2 FROM table_1 RIGHT JOIN table_2 ON table_1.ID = table_2.ID
UNION
SELECT table_1.ID, table_1.value_1, table_2.value_2 FROM table_1 LEFT JOIN table_2 ON table_1.ID = table_2.ID
有没有办法使用 Power Query 在 Excel 中做同样的事情?
使用内置的 Microsoft Query 和 SQL 解决了问题,但仍然对使用 Power Query 的解决方案感兴趣。
答案1
因此,在 Power Query 中有一个可选参数用于设置合并查询的连接类型(即表.嵌套连接功能)
Table.NestedJoin(table1 作为表,key1 作为任意,table2 作为任意,key2 作为任意,newColumnName 作为文本,可选 joinKind 为可空数字) 见表
默认值为 1,即LEFT OUTER
连接。
合并查询的默认 GUI:
在您的 PQL 语句中生成如下一行:
-- LEFT OUTER JOIN
Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn")
由于根本没有设置 joinKind 参数,因此它默认为LEFT OUTER
连接。
如果你检查仅包含匹配的行复选框,您将执行INNER
连接并且生成的行如下所示:
-- INNER JOIN
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.Inner)
(注意:有一个 JoinKind 枚举映射到参数的魔法数字:因此 JoinKind.Inner 计算为 0,JoinKind.LeftOuter 计算为 1,等等。)
在 Excel 中,您必须手动修改此公式才能执行FULL OUTER
连接:
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn",JoinKind.FullOuter)
或者
= Table.NestedJoin(#"Changed Type",{"ID"},Table1,{"ID"},"NewColumn", 3 )
在 PowerBI Desktop 中,有一个下拉菜单可以选择连接类型。