跨测量的 InfluxDB 数学

InfluxDB mathematics across measurements

我的 InfluxDB 中有两个测量值,例如 mem_usedmem_ 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 中进行聚合。