涌入:在不同的群体中对相同的领域进行数学运算

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 没有任何问题