IBM RTC中SPARQL查询有效估算求和异常的技术求助
解决IBM RTC中SPARQL自定义表达式统计有效估算的问题
问题分析
你遇到的核心问题是:当任务未设置Correction值时,自定义表达式因未正确处理null属性值,导致这部分任务的有效估算未被计入总和。RTC中未设置的属性会返回null,直接用$Task:Correction$ > 0或!=0这类条件判断时,null与数值的比较结果为unknown,会被编辑器判定为false,部分场景下会导致表达式返回null而非预期的Estimate值,最终求和时被忽略。
解决方案
根据你的需求(取Correction与Estimate的较大值,求和后转小时),使用以下SPARQL表达式:
单个任务的有效估算表达式
IF(BOUND($Task:Correction$) && $Task:Correction$ > $Task:Estimate$, $Task:Correction$, $Task:Estimate$)
BOUND($Task:Correction$):先判断任务是否设置了Correction属性,避免null值干扰判断逻辑- 当
Correction存在且大于Estimate时取Correction,否则取Estimate
总和计算(转换为小时)
将上述表达式嵌套进SUM聚合函数,并除以3600000转换为小时单位:
SUM(IF(BOUND($Task:Correction$) && $Task:Correction$ > $Task:Estimate$, $Task:Correction$, $Task:Estimate$) / 3600000)
若你的规则是「只要存在Correction就用它,不管大小」
则简化为:
SUM(IF(BOUND($Task:Correction$), $Task:Correction$, $Task:Estimate$) / 3600000)
验证要点
- 确保
Correction和Estimate属性均为数值类型(RTC中对应「持续时间」类型,存储单位为毫秒) - 测试时覆盖三类任务:仅设
Estimate、仅设Correction、两者都设的任务,确认总和是否符合预期
内容的提问来源于stack exchange,提问作者WKA
相关产品推荐
相关产品推荐

