按时标计算的字段

时间:2019-09-03 08:58:23

标签: sql postgresql timescaledb

我正在尝试将带有传感器数据的计算字段添加到我的超表中,例如,我想添加体积读数的导数以获得体积流量。

我尝试使用连续聚合来执行此操作,但是得到invalid SELECT query for continuous aggregate

create view public.readings_raw_with_calc_fields
WITH (timescaledb.continuous)
as
select 
serial,
time,
type,
value
from public.readings_raw
union all
select 
serial,
time,
'Volume flow calc.' as type,
(lead(value) over (partition by serial,devicetype,manufacturer order by time))-value as value
from 
public.readings_raw
where type='Volume'

是因为lead函数,还是因为连续聚合中必须有聚合函数?最佳做法是什么?我可以做一个工作,每分钟将数据插入原始表中,但是如果及时插入新数据,我将无法捕获(这是一个相当大的表,因此我无法每分钟运行一次整个表)。

1 个答案:

答案 0 :(得分:1)

这两个窗口功能和UNION都将阻止连续的聚合工作。

在这种情况下,由于每行执行的计算量很小,因此按时间索引和常规视图可能会提供所需的性能。