Power BI矩阵小计不等于列值之和:会议室占用率计算异常问题
问题原因
该问题的核心是聚合粒度不匹配:
- 你的预订事实表中,同一日期、同一会议室如果存在多条预订记录,对应的可用时长会在每条记录中重复存储:
- 若直接对可用时长列求和,会出现重复计算,结果远大于真实值
- 若为了避免重复采用去重求和逻辑,又会仅对可用时长的唯一值汇总。你将B会议室可用时长设为1后,所有B会议室记录的可用时长均为1,去重后仅统计1次,加上A会议室的12就得到了错误的小计结果13,和你遇到的情况完全吻合。
解决方法
通过DAX度量值实现正确聚合即可,具体操作如下:
1. 确认模型关联
- 日期维度表和预订事实表通过日期字段建立一对多关联
- 建议单独创建会议室维度表(存储所有会议室名称等基础信息),和预订事实表通过会议室名称建立一对多关联
2. 编写正确的可用时长度量值
如果所有会议室单日可用时长均为12小时,可直接使用简化版度量值:
总可用时长 = COUNTROWS( SUMMARIZE('预订事实表', '日期维度'[日期], '会议室维度'[会议室名称]) ) * 12
如果不同会议室可用时长不同,可使用通用版度量值:
总可用时长 = SUMX( SUMMARIZE('预订事实表', '日期维度'[日期], '会议室维度'[会议室名称], "单日单会议室可用时长", MAX('预订事实表'[可用时长]) ), [单日单会议室可用时长] )
3. 替换矩阵值字段
将矩阵中原有的可用时长字段替换为上述度量值,即可得到正确的小计、总计结果。
内容的提问来源于stack exchange,提问作者Bende
相关产品推荐
相关产品推荐

