Power BI能否实现类似SQL Union动态补列的表合并效果?
问题解答
可以实现,且不需要修改表B的原始结构,和你给出的SQL动态加列合并的逻辑完全一致,常用两种实现方式:
方式1:Power Query 编辑器操作(推荐,适合可视化操作场景)
- 先将表A、表B导入Power BI,点击顶部「转换数据」进入Power Query编辑器
- 选中表B对应的查询,点击顶部「添加列」选项卡的「自定义列」,设置列名为
Location,自定义列公式输入""(如果需要匹配空值可填null),确认后表B的查询结果会临时新增Location列,该操作仅修改当前查询的输出逻辑,不会改动源表B的结构 - 选中表A对应的查询,点击顶部「主页」选项卡的「追加查询」,选择追加表B,确认后即可得到列对齐的合并结果。如果需要和SQL
UNION一样自动去重,可以在追加后对结果表执行「删除行」-「删除重复项」操作;如果要保留所有重复行(对应SQLUNION ALL)直接输出即可。
方式2:DAX 新建表(适合直接写表达式生成结果场景)
点击顶部「建模」选项卡的「新建表」,输入以下DAX表达式即可直接生成合并表:
合并结果 = VAR 取A表列 = SELECTCOLUMNS('表A', "ID", '表A'[ID], "Name", '表A'[Name], "Location", '表A'[Location]) VAR 取B表列补空值 = SELECTCOLUMNS('表B', "ID", '表B'[ID], "Name", '表B'[Name], "Location", "") RETURN // 需要去重(对应SQL UNION)则套一层DISTINCT,不需要去重(对应SQL UNION ALL)直接返回UNION结果即可 DISTINCT(UNION(取A表列, 取B表列补空值))
该写法和你提供的SQL逻辑完全对应:通过SELECTCOLUMNS动态选取列、给表B动态补Location字段的固定空值,用UNION做纵向合并,全程不会修改两张源表的原有结构。
内容的提问来源于stack exchange,提问作者RKaur
相关产品推荐
相关产品推荐

