【问题标题】:influx query to calculate success rate流入查询计算成功率
【发布时间】:2018-07-27 11:00:07
【问题描述】:

我在 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 来生成这个。所以我写在这里寻求帮助。

提前致谢。

【问题讨论】:

    标签: sql influxdb


    【解决方案1】:

    一种方法是在 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 支持分析函数,那么我们可以通过另一种方式编写上述查询。

    【讨论】:

    • 感谢您的回复。但我确实需要一个 influxdb 查询来获得成功率。你知道怎么写吗?
    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多