Tibco Spotfire组合图表:无需新增计算列实现UCL计算
解决Tibco Spotfire组合图中无需新建计算列的UCL计算问题
要在不创建新计算列的前提下计算UCL,核心思路是把你原来两个度量的完整逻辑(包括条件判断)直接内联到UCL的公式中,这样就能复用相同的条件判断逻辑,同时完成UCL的计算。
先明确你原来的两个度量逻辑
首先拆解你给出的两个公式的核心逻辑:
- Average度量:当当前X轴周期的
Count([Value]) OVER (LastPeriods(1,[Axis.X])) = 1时,计算Count([W/O]) / Avg([A/C Type Monthly FH]) * 1000,否则返回0 - 检测次数度量:当同样的条件满足时,计算
Avg([A/C Type Monthly FH] / 1000),否则返回0
整合后的UCL表达式
把上述两个逻辑直接代入UCL公式,同时加入除以0的防护(避免计算报错),最终的自定义表达式如下:
If( // 保留原条件,同时避免除以0的错误 Count([Value]) OVER (LastPeriods(1,[Axis.X])) = 1 AND Avg([A/C Type Monthly FH] / 1000) > 0, // 内联Average的计算 (Count([W/O]) / Avg([A/C Type Monthly FH]) * 1000) + 3 * Sqrt( // 分子是Average计算值,分母是检测次数计算值 (Count([W/O]) / Avg([A/C Type Monthly FH]) * 1000) / (Avg([A/C Type Monthly FH] / 1000)) ), // 不满足条件或存在计算风险时返回0(可根据需求改为Null) 0 ) as [UCL]
关键说明
- 条件复用:完全保留了你原来的
Count([Value]) OVER (LastPeriods(1,[Axis.X])) = 1判断,确保UCL只在和另外两个图表相同的条件下计算 - 除以0防护:加入
Avg([A/C Type Monthly FH] / 1000) > 0的判断,避免当检测次数为0时出现平方根内的除法错误 - 无额外计算列:所有计算逻辑都在一个表达式内完成,不需要创建中间计算列
如果你的Average或检测次数的核心计算逻辑和我理解的有偏差(比如Average实际是取Avg([Value])而非Count([W/O])/...*1000),只需要把对应部分替换成你实际的计算逻辑即可——核心就是把原来两个度量的完整逻辑(包括条件)直接嵌入UCL公式中。
内容的提问来源于stack exchange,提问作者L. Scheipers
相关产品推荐
相关产品推荐

