如何规范化 InfluxDB 中的时间序列?

How can I normalize the time series in InfluxDB?

目标是创建在时间范围的第一个值上标准化的时间序列。例如,我们有系列

time                 | value
------------------------------
2020-07-13T00:00:00Z | 2
2020-07-14T00:00:00Z | 4
2020-07-15T00:00:00Z | 3

想要得到结果

time                 | value
------------------------------
2020-07-13T00:00:00Z | 1
2020-07-14T00:00:00Z | 2
2020-07-15T00:00:00Z | 1.5

我试过以下查询:

select "value" / first_value from (select "value" from "database"."autogen"."measurement"), (select first("value") as first_value from "database"."autogen"."measurement")

但它产生空的时间序列。

谁能告诉我哪里错了?

可以通过在查询末尾添加 fill(previous) 来实现所需的结果,即

select "value" / first_value from (select "value" from "database"."autogen"."measurement"), (select first("value") as first_value from "database"."autogen"."measurement") fill(previous)

...给出以下输出:

name: measurement
time                 value_first_value
----                 -----------------
2020-07-13T00:00:00Z 
2020-07-13T00:00:00Z 1
2020-07-14T00:00:00Z 2
2020-07-15T00:00:00Z 1.5

似乎要进行 "value" / first_value 计算,两个字段中的值必须存在于同一时间戳中。由于子查询 select first("value") as first_value from "database"."autogen"."measurement" 的结果在特定时间戳提供了单个值,因此不满足要求。但是,fill(previous) 使 first_value 在所需的时间戳可用。