Power BI表格视觉对象中如何将同一用户多行数据合并为一行?
在Power BI表格视觉对象中合并用户多行数据为单行
针对你描述的用户David对应3行、每行仅单个Report列有值的情况,有两种高效解决方法:
方法一:在Power Query中预处理数据源(推荐)
这种方法直接从数据源头合并行,后续所有视觉对象都能复用处理后的数据:
- 打开Power Query编辑器,选中目标数据表
- 点击「开始」选项卡 → 「分组依据」
- 在分组配置窗口中:
- 分组依据列选择你的用户列(比如「用户」)
- 依次添加3个聚合列:
- 列名:
Report 1,操作选「最大值」,对应列选Report 1 - 列名:
Report 2,操作选「最大值」,对应列选Report 2 - 列名:
Report 3,操作选「最大值」,对应列选Report 3
- 列名:
- 点击确定,此时每个用户只会保留一行数据,各Report列会自动填充对应非空值
方法二:用DAX创建度量值(适合不修改数据源的场景)
如果不想改动原始数据,可以通过度量值在视觉层实现合并:
- 针对每个Report列创建如下度量值(替换
你的表名为实际表名):Report 1 值 = CALCULATE(MAX('你的表名'[Report 1]), ALLEXCEPT('你的表名', '你的表名'[用户]))Report 2 值 = CALCULATE(MAX('你的表名'[Report 2]), ALLEXCEPT('你的表名', '你的表名'[用户]))Report 3 值 = CALCULATE(MAX('你的表名'[Report 3]), ALLEXCEPT('你的表名', '你的表名'[用户])) - 在表格视觉对象中,拖入「用户」列和这三个新创建的度量值,即可看到每个用户一行、各Report值都显示在同一行的效果
说明
两种方法都用到MAX函数,原因是你的数据中每行仅单个Report列有值,其余为空,MAX会自动忽略空值,取到该用户对应Report列的唯一非空值,完全匹配需求。
内容的提问来源于stack exchange,提问作者santu
相关产品推荐
相关产品推荐

