如何在Power Query中实现交叉连接(笛卡尔积)
在Power BI查询编辑器中实现无共同列表的笛卡尔积
需求说明
需要将无共同列的表A和表B生成笛卡尔积(全组合),示例如下:
表A
| Column1 | Column2 |
|---|---|
| 1 | A |
| 1 | B |
表B
| Column3 |
|---|
| 2G |
| 4H |
期望结果表C
| Column1 | Column2 | Column3 |
|---|---|---|
| 1 | A | 2G |
| 1 | B | 2G |
| 1 | A | 4H |
| 1 | B | 4H |
方法一:可视化操作(添加辅助列)
- 打开查询编辑器,确保表A和表B已加载
- 选中表A,点击【添加列】→【自定义列】,输入公式
=1,将列名改为Key - 对表B执行同样操作,添加值为
1的Key列 - 回到表A,点击【合并查询】→【合并查询作为新查询】,在弹窗中选择表B,连接类型选完全外部,匹配列选两个表的
Key - 点击确定后,展开合并列中表B的所有字段,最后删除多余的
Key列即可
方法二:M语言直接生成(更高效)
- 在查询编辑器中,点击【主页】→【新建源】→【空白查询】
- 打开【高级编辑器】,替换原有代码为以下内容(注意替换表名):
let 表A = 源{[Name="表A"]}[Data], // 替换成你的表A实际名称 表B = 源{[Name="表B"]}[Data], // 替换成你的表B实际名称 添加表B数据 = Table.AddColumn(表A, "表B数据", each 表B), 展开所有列 = Table.ExpandTableColumn(添加表B数据, "表B数据", Table.ColumnNames(表B), Table.ColumnNames(表B)) in 展开所有列
- 点击【完成】,即可得到笛卡尔积结果
内容的提问来源于stack exchange,提问作者Agustin Jornet
相关产品推荐
相关产品推荐

