涌入:在不同的组中进行相同的数学运算

时间:2018-01-25 09:04:09

标签: influxdb chronograf

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

刚设法回答我自己的问题。虽然其中一种显而易见的方法是执行自联接,但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而不会出现任何问题