跨测量的 InfluxDB 数学
InfluxDB mathematics across measurements
我的 InfluxDB 中有两个测量值,例如 mem_used
和 mem_ available
。
我尝试查询这些测量值并使用
进行数学运算
SELECT mean("mem_used_value") / mean("mem_available_value") FROM
(
SELECT mean("value") AS "mem_used_value",
mean("value") AS "mem_available_value"
FROM "dbname"."autogen"."mem_used",
"dbname"."autogen"."mem_available"
GROUP BY time(1m)
)
GROUP BY time(1m)
查询的结果很奇怪,我想知道InfluxDB是否可以跨测量进行数学计算。
我对这个功能做了一些研究,发现问题 3552 Mathematics across measurements 仍然存在。不过三年前就有人要求了。
有没有办法做到这一点?欢迎任何建议。
Influx QL 中没有 JOIN。
请记住:这不是关系数据库,查询语言可能看起来很熟悉,但它是完全不同的东西。
以下是您可以执行的操作。
1) 最聪明、最合法的方法:正确调整测量值。
目前你没有:不应该有两个测量值,而是一个,比如(在 line protocol 表示法中)
memusage,host=yourhost,othertag=something,yetanotertag=anything mem_used=123,mem_available=321 yourtimestamp
2) 使用 Kapacitor 将您的测量值全部加入。
在那里,您可以直接在 Kapacitor 中进行数学计算,或者简单地将连接的结果写回到单个测量中,然后在普通的 InfluxQL 中进行聚合。
我的 InfluxDB 中有两个测量值,例如 mem_used
和 mem_ available
。
我尝试查询这些测量值并使用
SELECT mean("mem_used_value") / mean("mem_available_value") FROM
(
SELECT mean("value") AS "mem_used_value",
mean("value") AS "mem_available_value"
FROM "dbname"."autogen"."mem_used",
"dbname"."autogen"."mem_available"
GROUP BY time(1m)
)
GROUP BY time(1m)
查询的结果很奇怪,我想知道InfluxDB是否可以跨测量进行数学计算。
我对这个功能做了一些研究,发现问题 3552 Mathematics across measurements 仍然存在。不过三年前就有人要求了。
有没有办法做到这一点?欢迎任何建议。
Influx QL 中没有 JOIN。
请记住:这不是关系数据库,查询语言可能看起来很熟悉,但它是完全不同的东西。
以下是您可以执行的操作。
1) 最聪明、最合法的方法:正确调整测量值。
目前你没有:不应该有两个测量值,而是一个,比如(在 line protocol 表示法中)
memusage,host=yourhost,othertag=something,yetanotertag=anything mem_used=123,mem_available=321 yourtimestamp
2) 使用 Kapacitor 将您的测量值全部加入。
在那里,您可以直接在 Kapacitor 中进行数学计算,或者简单地将连接的结果写回到单个测量中,然后在普通的 InfluxQL 中进行聚合。