

加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
使用ALL函数来计算占比,明明公式正确,返回的百分比却都是100%,百思不得其解,这是软件的Bug吗?
举例
基于下表,计算每个班级的人数占比。

度量值
人数 = SUM('班级人数'[人数])
总人数_Wrong = CALCULATE([人数],ALL('班级人数'[班级]))
班级人数占比_Wrong = DIVIDE([人数],[总人数])
异常结果如下:

解决方案
班级这一列使用了按列排序,把班级字段拖入报表中的时候,实际上还拖入了一个看不到的班级排序字段,这样才能实现排序的效果。这种情况下,ALL函数只用了一个字段,并没有彻底清除筛选,所以分母的总人数返回的还是每个班级的人数。

把字段和排序字段都放到ALL的参数中,就会返回正确的结果。
本例把ALL的参数调整为班级和用于排序的班级排序字段,如下:
总人数 = CALCULATE([人数],ALL('班级人数'[班级],'班级人数'[班级排序]))

拓展
按列排序还会有其他的副作用,比如判断某个被排序的字段是否被筛选,需要用“||”把两个字段都放进去取并集才可靠,如:ISFILTERED('班级人数'[班级]) || ISFILTERED('班级人数'[班级排序])。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。