You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PowerBI Desktop:SUM忽略筛选时行级百分比计算异常及解决方法问询

问题原因与动态百分比实现方案

这个问题我之前也碰到过,核心症结在于计算列和度量值的本质区别——你现在用的是计算列来计算百分比,而计算列是静态的,根本不会响应切片器的筛选!

为什么会出现这个问题?

计算列是在数据加载到Power BI模型时就一次性计算完成的,它的结果会永久存在于表中,完全不考虑后续你通过切片器、筛选器做的任何交互操作。所以你写的Value/SUM(Value)里的SUM(Value),从始至终都是全量数据的总和20,哪怕你筛选了Dave的发票,这个值也不会变,自然百分比就错了。

怎么解决?用度量值实现动态计算

你需要把静态的计算列换成动态的度量值,因为度量值会根据当前的筛选上下文(也就是你选的切片器条件)实时重新计算。具体步骤如下:

  1. 创建计算筛选后总额的度量值(分开写更清晰,也可以直接内嵌到百分比度量值里):
筛选后发票总额 = SUM('你的发票表'[Value])

记得把你的发票表替换成你实际使用的表名。

  1. 创建百分比度量值
发票占比百分比 = DIVIDE(SELECTEDVALUE('你的发票表'[Value]), [筛选后发票总额], 0)
  • SELECTEDVALUE('你的发票表'[Value])会取出当前行的Value值;
  • DIVIDE是Power BI专用的安全除法函数,第三个参数0是当除数为0(比如没有筛选到任何数据)时返回的默认值,避免报错;
  • 这个度量值会自动根据当前切片器的筛选结果,计算每行Value占筛选后总额的比例。
  1. 替换可视化表格中的列
    把原来的Percentage计算列从数据表中移除,添加刚创建的发票占比百分比度量值,还可以设置它的格式为百分比(保留两位小数)。

效果验证

  • 未筛选时,[筛选后发票总额]计算全量数据的20,10/20=50%、5/20=25%,和你原来的正确结果一致;
  • 筛选销售代表Dave后,[筛选后发票总额]自动计算为15,此时10/15≈66.67%、5/15≈33.33%,完全符合预期。

内容的提问来源于stack exchange,提问作者Bud

火山引擎 最新活动