You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI DAX百分比计算遇无穷大错误,求修正方案

DAX计算百分比出现无穷大错误的解决方法

问题场景

  • 基于Yardi数据创建矩阵,需计算各GL代码(对应唯一Rank行号)的金额占**Rank=24(实际收入总计)**的百分比
  • 预期效果:所有行显示「当前行金额 / Rank=24金额」的百分比
  • 实际问题:仅Rank=24的行显示正确百分比,其余行均出现无穷大错误

原错误DAX代码

PercentageMeasure = VAR TotalSelectedAmount = 
    CALCULATE(
        SUM(Onepage[Amount]),
        ALLSELECTED(Onepage[Property Code])
    )
    var TotalActualIncome =
    CALCULATE(
        SUM(Onepage[Amount]),ALLSELECTED(Onepage[Property Code]), FILTER(Onepage, Onepage[Property Code] IN VALUES(Onepage[Property Code]) && Onepage[Month] in VALUES(Onepage[Month]) && Onepage[Year] in VALUES(Onepage[Year]) && Onepage[Rank] = 24)
    )
    RETURN 
    ([Total Selected Amount]*100 / [Total Actual Income])

问题原因

  1. 除数为空导致无穷大:当处于非Rank=24的行上下文时,TotalActualIncome的FILTER逻辑会继承当前行的Rank筛选,导致筛选后无数据返回空值,直接除以空值就会出现无穷大错误
  2. 变量引用错误:返回语句中错误引用了度量值[Total Selected Amount],而非定义的变量TotalSelectedAmount
  3. 筛选条件冗余:使用IN VALUES()的判断完全多余,ALLSELECTED已经保留了所选维度的筛选上下文

修正后的DAX代码

PercentageMeasure = 
VAR TotalSelectedAmount = SUM(Onepage[Amount])
VAR TotalActualIncome =
    CALCULATE(
        SUM(Onepage[Amount]),
        ALLSELECTED(Onepage[Rank]), // 清除当前行的Rank筛选,确保能获取到Rank=24的金额
        Onepage[Rank] = 24,
        ALLSELECTED(Onepage[Property Code], Onepage[Year], Onepage[Month]) // 保留用户所选的物业、年月筛选
    )
RETURN
    DIVIDE(TotalSelectedAmount * 100, TotalActualIncome, 0) // 用DIVIDE处理除数为空/0的情况,返回默认值0

修正说明

  • 使用DIVIDE函数替代直接除法,自动处理除数为空或0的情况,避免错误,第三个参数可设置默认返回值(这里设为0)
  • 用ALLSELECTED(Onepage[Rank])清除当前行的Rank筛选上下文,确保无论当前行的Rank是什么,都能正确获取到Rank=24的实际收入总计金额
  • 简化筛选逻辑,直接保留用户所选的Property Code、Year、Month维度,无需冗余判断
  • 修正变量引用,直接使用定义好的TotalSelectedAmount变量

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:13:22