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])
问题原因与修正方案
- 错误使用SELECTEDVALUE
SELECTEDVALUE是用于度量值的函数,依赖上下文筛选返回单值,但计算列是逐行计算,不需要此函数。直接引用列名就能获取当前行的对应值。
修正后的计算列代码:
RI_3years_YesNo = VAR ColTotal = 'Usage details'[costInBillingCurrency] VAR ColRI3 = 'Usage details'[RI_3years] RETURN IF(ColTotal = ColRI3, "No Reservation", "Reservation")
- 浮点精度潜在问题
如果修正后仍有异常,可能是浮点数计算的精度误差导致数值看似相等但实际不等。可以通过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
相关产品推荐
相关产品推荐

