我认为我的请求很常见,但我还没能找到解决方案。
主题/摘要说明了一切,但为了提供更多颜色,我的度量标准通常介于0到100之间,但在某些奇怪的情况下,它可以拍摄高达1000的数据,这使0-100数据的其余部分相形见绌
我的目标是,当数据超过100时,将其设置为110,以便我知道它的值超过100。
我唯一能找到的是removeAboveValue()但是在使用它时看起来好像数据丢失了。
请帮忙。
谢谢!
答案 0 :(得分:1)
最简单的方法是使用transformNulls
,因此查询将如下所示:
transfromNull(removeAboveValue(some.metric.avg, 100), 110)
请注意,上面还将设置110到真正的差距。当然,您可以在原点指标中再次使用transformNull
将间隙标记为... -1(或其他)
transfromNull(removeAboveValue(transfromNull(some.metric.avg, -1), 100), 110)
但这引入了魔法null has value
,除了它的不好(误导)之外,并不总是可行的(如果指标可以有负值,零或其他)。
下一个解决方案是......
只准备超过数据点的行并将其值设置为110
。它可以通过多种方式完成。我们采取一些简单的方法:
一个。只得到100以上
removeBelowValue(some.metric.avg, 100)
湾使用除以相同指标的值将其值减小为1:
divideSeries(removeBelowValue(some.metric.avg, 100), removeBelowValue(some.metric.avg, 100))
℃。将值设置为110 - 乘以110:
scale(divideSeries(removeBelowValue(some.metric.avg, 100), removeBelowValue(some.metric.avg, 100)),110)
将准备好的指标与值低于阈值的指标合并(使用removeAboveValue
)。作为合并功能,在这种情况下,请使用minSeries
minSeries(
removeAboveValue(some.metric.avg, 100),
scale(
divideSeries(
removeBelowValue(some.metric.avg, 100),
removeBelowValue(some.metric.avg, 100)
),
110
)
)