1

我目前使用以下“模式”设置了 InfluxDB 测量:

+----+-------------+-----------+
| ts | cost(field) | type(tag) |
+----+-------------+-----------+
|  1 | 10          | 'a'       |
|  1 | 20          | 'b'       |
|  2 | 12          | 'a'       |
|  2 | 18          | 'b'       |
|  2 | 22          | 'c'       |
+------------------+-----------+

我正在尝试编写一个查询,该查询将按时间戳对我的表进行分组,并获得两个不同标签的字段值之间的增量。如果我想获得标签'a'和标签'b'之间的增量,它将给我以下结果(请不要忽略标签'c'):

+----+-----------+------------+
| ts | type(tag) | delta_cost |
+----+-----------+------------+
|  1 | 'a'       | 10         |
|  2 | 'b'       |  6         |
+----+-----------+------------+

这是 Influx 可以做的事情还是我使用了错误的工具?

4

1 回答 1

2

只是设法回答了我自己的问题。虽然其中一种显而易见的方法是执行自连接,但 Influx 不再支持连接。但是,我们可以使用以下格式的嵌套选择:

SELECT MEAN(cost_a) - MEAN(cost_b) as delta_cost
FROM
    (SELECT cost as cost_a, tag, tablename where tag='a'),
    (SELECT cost as cost_b, tag, tablename where tag='b')
GROUP BY time(60s)

因为无论如何我每 60 秒获取一次数据,并且我保证每 60 秒每个标签只有一个点,所以我可以毫无问题地使用GROUP BY和获取MEAN

于 2018-01-26T07:02:13.317 回答