如何在 Grafana/InfluxDB 中创建百分比/比率列?

Posted

技术标签:

【中文标题】如何在 Grafana/InfluxDB 中创建百分比/比率列?【英文标题】:How to create a percentage / ratio column in Grafana / InfluxDB? 【发布时间】:2018-12-13 03:43:21 【问题描述】:

我有关于写入 InfluxDB 的错误数据(示例已简化)。

 time   | error   | some_unique_data
--------|---------|--------------------
 <time> | hello 1 | some unique data...
 <time> | hello 2 | some unique data...
 <time> | hello 2 | some unique data...
 <time> | hello 3 | some unique data...

我可以编写以下查询来查看 Grafana 中最常见错误的排序列表:

SELECT COUNT("some_unique_data") FROM "my_measument" WHERE $timeFilter GROUP BY error

给出:

| error   | count
|---------|-------
| hello 2 | 2
| hello 1 | 1
| hello 3 | 1

我缺少的是可以向我展示每个错误的影响的列,如下所示:

| error   | count | impact
|---------|----------------
| hello 2 | 2     | 50%
| hello 1 | 1     | 25%
| hello 3 | 1     | 25%

我应该在我的查询中添加什么才能让这个 impact 字段正常工作?

【问题讨论】:

【参考方案1】:

这是一个有用的answer,但不幸的是它不能解决你的问题。

在你的例子中:

| error   | count
|---------|-------
| hello 2 | 2
| hello 1 | 1
| hello 3 | 1

您已使用 GROUP BY "error" 获取每个 error 的计数,因此一旦您这样做了,您将无法再访问完整计数,因此您必须在 GROUP BY 之前进行。

不能这样做:

SELECT COUNT(*) AS full_count, "some_unique_data" FROM "my_measument" WHERE $timeFilter

为了获得完整的记录数,因为您不能使用SELECT COUNT(), "field_name" FROM ...

因此,在执行 GROUP BY 之前获得完整计数是不可能的。

好吧,让我们试试别的:

SELECT "fields_count" / SUM("fields_count") AS not_able_to_use_SUM_with_field , "error" FROM ( 
    SELECT COUNT("some_unique_data") AS fields_count AS fields_sum FROM "my_measument" WHERE $timeFilter GROUP BY "error"
)

前面的查询显然不起作用。那该怎么办呢?

对不起,你无能为力:/

这是另一个link to the documentation。

【讨论】:

? 你成就了我的一天

以上是关于如何在 Grafana/InfluxDB 中创建百分比/比率列?的主要内容,如果未能解决你的问题,请参考以下文章

搭建Jmeter + Grafana + InfluxDB性能测试监控环境

InfluxDB 和 Grafana:InfluxDB 错误:错误请求 |码头工人

在 Grafana (InfluxDB) 中自动选择新行

Grafana + Influxdb Android性能监控部署

grafana,influxdb动态展示监控项

grafana+influxDB+telegraf的基本操作