InfluxDB:Flux是将简单计算添加为查询列的唯一方法吗?

问题描述

我正在尝试这样的查询

SELECT COUNT("value"),F("value"),G("value") FROM "soMetable" WHERE time >= t1 AND time < t2 GROUP BY (aggregateWindow),*

F =平方和,如果我可以做下面的SUM("value"*"value")之类的事情,这并不太难,但是显然在Influx中不起作用(或者我使用的语法错误) )。

G = unix纪元中的聚合时间戳记+ gregationWindow。因此,例如,如果aggregationWindow == 1s,那么我需要以下输出(假设该aggregationWindow中只有一个点,其值为value):

time                value F  G
----                ----- -- -----------------
1600272300000000000 1     1  1600272301000000000
1600272301000000000 2     4  1600272302000000000
1600272302000000000 3     9  1600272303000000000
1600272303000000000 4     16 1600272304000000000
1600272304000000000 5     25 1600272305000000000

我知道您可以通过通量将平方和实现为described here,但是我担心Flux与常规Influx查询性能mentioned here。所以基本上我在问,通量是进行这样的查询的唯一,最有效的方法吗?

解决方法

简单:

SELECT 
 COUNT("value"),"value"*"value" AS F,POW("value",2) AS FwithPOWfunction
FROM "someTable" 
WHERE 
  time >= t1 AND time < t2 
GROUP BY (aggregateWindow)

您无法创建新的时间列,但可以将偏移量应用于时间分组GROUP BY time(time_interval,[<offset_interval])

Doc是您的好朋友,以获取更多详细信息并学习正确的语法: