InfluxDB 中的简单查询语言帮助 - 创建聚合 table

Simple query language help in InfluxDB - creating an aggregate table

我正在尝试学习 InfluxDB 的查询语言来创建聚合 table,但我遇到了问题。这是我的难题。 假设我有这样的 table:

名称:温度

时间 |价值 |公制 |测量

X | 25 |度(摄氏度) |温度

X | 10 |度(摄氏度) |温度

还有这样一个

姓名:cpu_usage

时间 |公制 |价值 |测量

X | %用法 | 73 | cpu_usage

X | %用法 | 75 | cpu_usage

我怎样才能把它们变成这样的 table:

名称:聚合

时间 |测量 |公制 |平均值

X |温度 |度(摄氏度) | 17.5

X | cpu_usage | %用法 | 74

基本上,我想用不同 table 的平均值创建另一个 table。但是,我还想保留其他 table 中的一些列名。现在,我遇到的问题是你不能混合聚合和非聚合函数,所以它不会让我做 "SELECT metric, measurement, mean(value) FROM cpu_usage INTO 聚合。而且,我不知道如何 merge/join tables(我认为它不再受支持),所以如果我要计算平均值,请将其存储在临时 table,我不知道如何将它与当前的 tables 结合起来。

很难从上面的示例中判断 metricmeasurement 是标记还是字段。假设它们是标签,那么您正在使用的数据如下所示

temperature,metric=degrees(C),measurement=temperature value=25 X
temperature,metric=degrees(C),measurement=temperature value=10 X

cpu_usage,metric=%usage,measurement=cpu_usage value=75 X
cpu_usage,metric=%usage,measurement=cpu_usage value=73 X

然后查询

SELECT mean(value) as usage INTO aggregate FROM cpu_usage GROUP BY *
SELECT mean(value) as temp INTO aggregate FROM temperature GROUP BY *

应该会为您提供所需的输出。

也就是说,这不是最佳做法

我建议您执行以下操作:

写下类似的点:

temperature,metric=degrees(C) value=25 X
temperature,metric=degrees(C) value=10 X

cpu_usage,metric=%usage value=75 X
cpu_usage,metric=%usage value=73 X

并有将测量值写入不同 retention policies:

的查询
SELECT mean(value) as value INTO mydb.aggregate.cpu_usage FROM cpu_usage GROUP BY *
SELECT mean(value) as value INTO mydb.aggregate.temperature FROM temperature GROUP BY *