当应用计数的结果为空时,是否可以将count的值设置为零。
SELECT count(status) FROM ( SELECT last("P-status") AS "status" FROM "autogen"."Pl" WHERE ("Platform" = 'Database-plat' AND "P-status" = 'ERROR') AND time >= now() - 1m GROUP BY time(500ms), "Node" fill(0) )
在这种情况下,如果内部查询返回null(对于所有Node),则count不给出任何值,因为fill将被忽略。我需要将该值设为零,这样,如果我必须对返回的结果执行任何其他操作,就可以做到。
如果可能,怎么办?
答案 0 :(得分:0)
我知道这是一个老问题,但由于它仍然非常相关并且我已经在这个问题上苦苦挣扎了一年多,我想根据这个问题的当前状态来回答这个悬而未决的问题我的研究:
Github 问题 here 和 here 暗示该问题自 2016 年以来就已知晓,但贡献者并未真正将其理解为问题,因为实施的理由存在问题(例如“这不是错误,这是一个功能,因为多个系列的歧义") 可以很容易地用唯一系列标识的特殊规则来回答,但尽管用户社区对此非常感兴趣,但已经没有多少活动了。另一点是他们发布了 2.x 版本,它更多地依赖于他们的新查询语言(Flux),所以他们很可能或多或少实际上放弃了 1.x 分支与 InfluxQL(也许除了 QL 向后兼容性在 2.x 和一些小的更新中,不确定)。
与此同时,我多次更新了 Grafana,但由于几个原因我不得不坚持使用 InfluxDB 1.x,并且 Flux 支持在某些时候发生了变化(不推荐使用的 Flux 插件,但 Flux 包含在标准的 InfluxDB 插件中,但后者没有” t 真的有效),所以 Grafana 中的 Flux 现在基本上不再工作了一段时间。我希望在那里更好地处理计数问题,但现在我在可靠地计算 InfluxDB 中的任何内容方面都不走运。我什至用 sum()
函数尝试了一些技巧,花哨的分组和我需要再次减去的虚拟值等等,但它总是归结为相同的结论:InfluxDB 可以做很多事情,但计数只是不不行。
这非常令人不满意,但似乎没有办法在没有臃肿查询系统、过度使用奇怪规则、虚拟值和任何查询都可能存在的不安全性的情况下实现计算数据点的“热切”目标如果您只需要查询特定的时间范围(其中任何虚拟值解决方法可能不起作用),请随时中断或中断。关于给定的优先级,这可能不会在不久的将来得到解决。