0

我正在尝试这样的查询:

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 epoch + aggregateWindow 中聚合的时间戳。因此,例如,如果aggregateWindow == 1s,那么我想要以下输出(假设该aggregateWindow 中只有一个点的值为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

我知道您可以通过这里描述的通量实现平方和,但我担心通量与常规流入查询的性能,如此处所述。所以基本上我在问,flux 是唯一且最有效的查询方式吗?

4

1 回答 1

0

简单的:

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 是您获取更多详细信息和学习正确语法的好朋友:

于 2020-10-16T14:01:30.170 回答