我的 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 数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53666199/