我的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仍然存在。但是,这是三年前提出的要求。
有没有办法做到这一点?任何建议都欢迎。
答案 0 :(得分:2)
Influx QL中没有JOIN。
请记住:这不是关系数据库,查询语言可能看起来很熟悉,但这是完全不同的事情。
这是您可以做的。
1):最聪明,最合法的方法:正确调整测量尺寸。
当前您没有:应该不应该进行两次测量,而应该像line protocol表示那样进行一次测量
memusage,host=yourhost,othertag=something,yetanotertag=anything mem_used=123,mem_available=321 yourtimestamp
2)使用Kapacitor完全合并您的测量。
在那里,您可以直接在Kapacitor中进行数学运算,也可以简单地将联接的结果写回到单个度量中,然后在纯InfluxQL中进行汇总。