按秒采样并填写没有数据的时间段

问题描述 投票:0回答:1

假设一个非常简单的表格:

一列

ts
(纳米时间戳类型),

一列

value
(双精度型)。

我想每小时采样一次

value

标准语法应该是这样的:

ts = 2024.03.26T09:30:00.005 2024.03.26T09:31:00.123 2024.03.26T10:30:00.105
val = 1.5 2.5 2.0
t = table(ts, val)
select last(val)
from t
group by bar(ts, 1s)
order by bar_ts

输出:

bar_ts              last_val
------------------- --------
2024.03.26T09:30:00 1.5     
2024.03.26T09:31:00 2.5     
2024.03.26T10:30:00 2 

但是,由于数据点沿时间轴分布不均匀,因此这种方式获得的结果并不精确为 3600 条记录。有时,一两秒内没有单个值,导致时间间隔缺失,例如上例中的 09:32:00 到 10:29:00 间隙。

有没有办法准确生成代表真实“最后看到的值”的样本?

group-by dolphindb
1个回答
0
投票

可以使用‘区间’进行统计并填写指定范围。

select last(val)
from t 
group by interval(ts, 1s, `prev) 

您可以使用

fill
指定的最后一个可用值来填充缺失时间戳的数据。

interval_ts         last_val
------------------- --------
2024.03.26T09:30:00 1.5     
2024.03.26T09:30:01 1.5     
2024.03.26T09:30:02 1.5     
2024.03.26T09:30:03 1.5     
2024.03.26T09:30:04 1.5    
......
© www.soinside.com 2019 - 2024. All rights reserved.