我目前使用以下“架构”设置了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 |
+----+-----------+------------+
是涌入可以做的事情还是我使用了错误的工具?
答案 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
而不会出现任何问题