如何计算UPS表中两列忽略零值的平均服务年龄(排除切片器)
DAX度量值:忽略零值且不受切片器影响的平均服务年龄计算
以下是满足需求的DAX度量值:
Avg Service Age = VAR TotalSum = SUMX( ALL(UPS), IF([1st Service Age] > 0, [1st Service Age], 0) + IF([2nd Service Age] > 0, [2nd Service Age], 0) ) VAR NonZeroCount = SUMX( ALL(UPS), IF([1st Service Age] > 0, 1, 0) + IF([2nd Service Age] > 0, 1, 0) ) RETURN FORMAT(DIVIDE(TotalSum, NonZeroCount, 0), "0.00")
关键逻辑说明
ALL(UPS):强制使用整个UPS表的全部数据,完全不受页面上任何切片器、筛选器的影响TotalSum:逐行遍历数据,累加两列中所有大于0的数值总和(示例中为3+5+2+6+2+1=19)NonZeroCount:逐行统计两列中非零值的总个数(示例中为6)DIVIDE(..., 0):安全处理除法运算,当所有值都是0导致除数为0时,直接返回0FORMAT(..., "0.00"):将结果格式化为两位小数,确保输出符合3.17或0.00的格式要求
验证结果
将该度量值添加到报表后,示例数据会返回3.17;若所有行的两列数值均为0,度量值将返回0.00,完全符合需求。
内容的提问来源于stack exchange,提问作者cghanta
相关产品推荐
相关产品推荐

