Postgresql 如何在时间刻度中为现有表创建物化视图?
当我试图通过查询为现有表创建物化视图时:Postgresql 如何在时间刻度中为现有表创建物化视图?,postgresql,timescaledb,Postgresql,Timescaledb,当我试图通过查询为现有表创建物化视图时: CREATE MATERIALIZED VIEW current_data_hourly WITH (timescaledb.continuous) AS SELECT id, time_bucket(INTERVAL '1 hour', creation_time) AS creation_time, AVG(current_abs_1_avg), MAX(current_abs_1_max),
CREATE MATERIALIZED VIEW current_data_hourly
WITH (timescaledb.continuous) AS
SELECT id,
time_bucket(INTERVAL '1 hour', creation_time) AS creation_time,
AVG(current_abs_1_avg),
MAX(current_abs_1_max),
MIN(current_abs_1_min)
FROM time_series.current_data
GROUP BY id, creation_time;
我得到:
ERROR: continuous aggregate view must include a valid time bucket function
SQL state: XX000
有什么不对劲吗?在上面的视图查询中,在hypertable
time\u系列中的输入列名是creation\u time
。当前的\u数据
,而输出列名定义为time\u bucket(间隔“1小时”,creation\u time)作为creation\u time
。根据分组依据
中的描述:
如果出现歧义,按名称分组将被解释为输入列名,而不是输出列名
也就是说,creation\u time
不是一个,它是time\u bucker
表达式的别名。这就是错误
一种修复方法是使用SELECT子句中列的位置:
每小时创建物化视图当前数据
使用(timescaledb.continuous)作为
选择id,
时间(间隔“1小时”,创建时间)作为创建时间,
平均值(当前平均值),
最大值(当前最大值),
最小值(当前值/绝对值/最小值)
来自时间序列。当前数据
分组1,2;