PBI DAX计算非空tHandle对应平均通话处理时长问题排查
DAX 平均通话处理时长计算修复方案
样例参考数据
| call_count | tHandle | tTalk |
|---|---|---|
| 10 | 2040.01 | |
| 7 | 1136.12 | 768.83 |
| 1 | 186.709 |
错误原因
你当前的DAX返回结果不符合预期,核心问题是分母的call_count求和没有添加筛选条件,会统计所有行的通话数量,而非仅统计tHandle非空的行:
样例中所有行的call_count总和为10+7+1=18,tHandle总和为1136.12+186.709≈1322.83,1322.83/18≈73.49,刚好匹配你得到的错误结果。
修复后的DAX代码
Average Call Handle = VAR TotalHandle = SUM(vw_fact_conversation_aggregate[tHandle]) VAR ValidCallCount = CALCULATE(SUM(vw_fact_conversation_aggregate[call_count]), NOT(ISBLANK(vw_fact_conversation_aggregate[tHandle]))) RETURN IF(ValidCallCount > 0, DIVIDE(TotalHandle, ValidCallCount), 0)
逻辑说明
- 用变量拆分计算步骤,可读性更强,也避免重复计算
- 通过
CALCULATE函数给有效通话量的求和添加筛选条件,仅统计tHandle不为空的行 - 采用
DIVIDE函数替代直接除法,自动处理除零异常,不会返回错误值 - 当没有有效通话时直接返回0,符合常规业务需求
代入样例数据计算,有效通话量为7+1=8,总处理时长≈1322.83,返回结果为1322.83/8≈165.35,和预期一致。
内容的提问来源于stack exchange,提问作者r2deeptube
相关产品推荐
相关产品推荐

