我在influxdb中有以下数据。
time count http_status
---- ----- -----------
1532500250000000000 105058 200
1532500250000000000 11 499
1532500260000000000 108119 200
1532500260000000000 9 499
1532500260000000000 2 400
1532500270000000000 8 499
1532500270000000000 1 400
1532500270000000000 105321 200
1532500280000000000 1 400
1532500280000000000 106611 200
1532500280000000000 15 499
1532500290000000000 105572 200
1532500290000000000 9 499
1532500290000000000 5 400
http_status是我的api状态。
我想对此度量创建一个连续查询以生成我的api的成功率,应按以下方式计算
count(http_status == 200) / count(all apis)
我知道逻辑很简单。但是我没有编写一个influx sql来生成这个。所以我在这里写信寻求帮助。
谢谢。
答案 0 :(得分:0)
一种方法是在select子句中使用相关子查询:
SELECT
time,
count,
http_status,
(SELECT SUM(CASE WHEN t2.http_status = 200 THEN 1 ELSE 0 END)
FROM yourTable t2
WHERE t2.time <= t1.time) /
(SELECT COUNT(*) FROM yourTable t2 WHERE t2.time <= t1.time) AS ratio
FROM yourTable t1;
如果InfluxDB支持分析功能,那么还有另一种方法可以编写上述查询。