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;