Power BI中Max与ALLEXCEPT组合分组求最大值异常问题排查
问题原因及解决办法
第一个公式的问题
你第一个公式里用ALLEXCEPT(cr481_evergradegroups, cr481_evergradegroups[EvergradeGroup])作为筛选条件,核心问题是表关系的筛选逻辑没搞对:
- 假设分组表
cr481_evergradegroups和产品表cr481_product是一对多关联(一个分组对应多个产品),ALLEXCEPT会保留当前分组的筛选,但CALCULATE计算产品表的MAX时,可能因为分组表存在重复的EvergradeGroup行,或者表关系的筛选方向设置错误,导致筛选范围超出了目标分组,把其他分组的产品数据也包含进来,才会算出16.5这种离谱的结果(毕竟你实际分值只有1-10)。
第二个公式的问题
用LOOKUPVALUE把分组移到产品表后结果更糟,大概率是LOOKUPVALUE本身出了问题:
- 如果一个产品对应多个分组(表关系不是严格的一对多),
LOOKUPVALUE会返回错误值或者随机匹配的分组,导致产品表的EvergradeGroup列数据混乱;就算是严格一对多,LOOKUPVALUE生成的计算列不会自动同步表关系的筛选,反而可能因为数据刷新或关联错误导致分组值错误,让ALLEXCEPT的筛选完全失效。
正确写法参考
直接基于产品表,利用表关系的筛选来计算分组最大值,不用绕分组表:
DurabilityMax = CALCULATE( MAX(cr481_product[DurabilityPoints]), ALL(cr481_product), VALUES(cr481_evergradegroups[EvergradeGroup]) )
如果你的视觉对象里已经用到了EvergradeGroup字段,还可以更简单:
DurabilityMax = CALCULATE( MAX(cr481_product[DurabilityPoints]), ALLEXCEPT(cr481_product, cr481_evergradegroups[EvergradeGroup]) )
另外别忘了检查两点:
- 分组表
cr481_evergradegroups里的"Blankets & Throws"分组有没有重复行; - 产品表中该分组的产品,
DurabilityPoints列是不是真的没有16.5这种异常值(比如输入错误,或者该列是计算列,公式写错了)。
内容的提问来源于stack exchange,提问作者Lovisa Carlvik
相关产品推荐
相关产品推荐

