涌入:在不同的群体中对相同的领域进行数学运算
Influx: doing math the same fields in different groups
我目前使用以下 "schema" 设置了 InfluxDB 测量:
+----+-------------+-----------+
| ts | cost(field) | type(tag) |
+----+-------------+-----------+
| 1 | 10 | 'a' |
| 1 | 20 | 'b' |
| 2 | 12 | 'a' |
| 2 | 18 | 'b' |
| 2 | 22 | 'c' |
+------------------+-----------+
我正在尝试编写一个查询,该查询将按时间戳对我的 table 进行分组,并获得两个不同标签的字段值之间的差值。如果我想获得标签 'a' 和标签 'b' 之间的增量,它会给我以下结果(请不要忽略标签 'c'):
+----+-----------+------------+
| ts | type(tag) | delta_cost |
+----+-----------+------------+
| 1 | 'a' | 10 |
| 2 | 'b' | 6 |
+----+-----------+------------+
这是 Influx 可以做的事情还是我使用了错误的工具?
刚刚设法回答了我自己的问题。虽然其中一种明显的方法是执行自连接,但 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
没有任何问题
我目前使用以下 "schema" 设置了 InfluxDB 测量:
+----+-------------+-----------+
| ts | cost(field) | type(tag) |
+----+-------------+-----------+
| 1 | 10 | 'a' |
| 1 | 20 | 'b' |
| 2 | 12 | 'a' |
| 2 | 18 | 'b' |
| 2 | 22 | 'c' |
+------------------+-----------+
我正在尝试编写一个查询,该查询将按时间戳对我的 table 进行分组,并获得两个不同标签的字段值之间的差值。如果我想获得标签 'a' 和标签 'b' 之间的增量,它会给我以下结果(请不要忽略标签 'c'):
+----+-----------+------------+
| ts | type(tag) | delta_cost |
+----+-----------+------------+
| 1 | 'a' | 10 |
| 2 | 'b' | 6 |
+----+-----------+------------+
这是 Influx 可以做的事情还是我使用了错误的工具?
刚刚设法回答了我自己的问题。虽然其中一种明显的方法是执行自连接,但 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
没有任何问题