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

Power BI DAX比较两列仅返回"No Reservation",未达预期结果

DAX计算列异常:仅返回"No Reservation"排查

我编写了DAX计算列对比两列值,代码如下:

RI_3years_YesNo = 
var ColTotal = SELECTEDVALUE('Usage details'[costInBillingCurrency])
var ColRI3 = SELECTEDVALUE('Usage details'[RI_3years])
return
IF(ColTotal = ColRI3, "No Reservation", "Reservation")

预期应该返回"No Reservation"或"Reservation"两种结果,但实际所有行都只返回"No Reservation"(截图显示全列为此值)。

其中RI_3years列由以下公式创建:

RI_3years = IF(ISBLANK(RELATED(Discount_Table[RI_3Years_hour])*'Usage details'[quantity]),'Usage details'[costInBillingCurrency],RELATED(Discount_Table[RI_3Years_hour])*'Usage details'[quantity])

问题原因与修正方案

  1. 错误使用SELECTEDVALUE
    SELECTEDVALUE是用于度量值的函数,依赖上下文筛选返回单值,但计算列是逐行计算,不需要此函数。直接引用列名就能获取当前行的对应值。

修正后的计算列代码:

RI_3years_YesNo = 
VAR ColTotal = 'Usage details'[costInBillingCurrency]
VAR ColRI3 = 'Usage details'[RI_3years]
RETURN
IF(ColTotal = ColRI3, "No Reservation", "Reservation")
  1. 浮点精度潜在问题
    如果修正后仍有异常,可能是浮点数计算的精度误差导致数值看似相等但实际不等。可以通过ROUND函数统一精度后再比较:
RI_3years_YesNo = 
VAR ColTotal = 'Usage details'[costInBillingCurrency]
VAR ColRI3 = 'Usage details'[RI_3years]
RETURN
IF(ROUND(ColTotal, 2) = ROUND(ColRI3, 2), "No Reservation", "Reservation")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:45:43