查 influxdb 数据库,通过flux 的window()函数分组,获取精确时间戳
q_windows = from(bucket: "ins_8k")
|> range(start: 2022-08-01T00:00:00Z, stop: 2023-08-11T00:00:00Z)
|> filter(fn: (r) => r._measurement == "ins_8k_his_vib")
|> filter(fn: (r) => r.pid == "2308030656501850003")
|> filter(fn: (r) => r._field == "one_freq_x")
|> filter(fn: (r) => r.datatype == "0" or r.datatype == "1")
|> drop(columns: ["datatype"])
|> window(every: 6h)
|> sort(columns: ["_time"], desc:false)
|> last()
q_min = q_windows
|> min()
|> rename(columns: {_value: "min_value"})
q_max = q_windows
|> max()
|> rename(columns: {_value: "max_value"})
q_last = q_windows
|> last()
|> rename(columns: {_value: "last_value"})
t1=join(tables: {max: q_max, last: q_last}, on: ["_start", "_field", "_measurement", "pid"])
|> sort(columns: ["_time"], desc: false)
|> keep(fn: (column) => column =~ /_time_last|last_value|max_value|_measurement|pid/)
t2=join(tables: {min: q_min, last: q_last}, on: ["_start", "_field", "_measurement", "pid"])
|> sort(columns: ["_time"], desc: false)
|> keep(fn: (column) => column =~ /_time_last|last_value|min_value|_measurement|pid/)
join(tables: {r1: t1, r2: t2}, on: ["_time_last","last_value", "_measurement", "pid"])
|> sort(columns: ["_time_last"], desc: false)
|> keep(fn: (column) => column =~ /_time_last|last_value|min_value|max_value|_measurement|pid/)
|> rename(columns: {_time_last: "time",last_value: "last_one_freq_x",min_value: "min_one_freq_x",max_value: "max_one_freq_x"})
|> yield()