如何在Grafana中基于动态时间区间用MariaDB SQL计算参数uptime?
你可以直接使用Grafana内置的$__from和$__to变量计算选中时间区间的总秒数,这两个变量会返回时间选择器对应起止时间的毫秒级Unix时间戳,差值除以1000就是当前选中区间的总秒数,完全适配动态变化的时间范围。
修改后的查询语句如下:
SELECT parameter_detail.system, parameter_detail.parameter_label, sum(parameter_uasvalue.uas) as 'Total UAS', ROUND((($__to - $__from)/1000 - sum(parameter_uasvalue.uas)) * 100 / (($__to - $__from)/1000), 2) as 'Uptime %' FROM parameter_health.parameter_uasvalue LEFT JOIN parameter_health.parameter_detail ON parameter_detail.id=parameter_uasvalue.id WHERE $__timeFilter(parameter_uasvalue.time) AND parameter_uasvalue.uas != '-1' AND parameter_uasvalue.uas != '0' GROUP BY parameter_detail.system, parameter_detail.parameter_label
补充说明
- 上述语句默认去掉了你原查询里
uas !=' 0'的前置空格,如果你的数据里确实存在带空格的' 0'值,可以改回原来的过滤条件。 - 语句里用了
ROUND函数保留2位小数,你可以根据需要调整小数位数,或者删掉ROUND函数直接返回原始计算值。 - 如果你只需要返回uptime字段不需要总UAS,可以删掉对应的
sum(parameter_uasvalue.uas) as 'Total UAS'行。
内容的提问来源于stack exchange,提问作者Ramanan
相关产品推荐
相关产品推荐

