postgresql - 如何为 Timescale 中的现有表创建物化视图?
问题描述
当我尝试通过查询为现有表创建物化视图时:
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
有什么建议可能是错的吗?
解决方案
在上面的视图查询中,输入列名(creation_time
位于 hypertabletime_series.current_data
中)和输出列名(定义为)之间的分组不明确time_bucket(INTERVAL '1 hour', creation_time) AS creation_time
。根据文档GROUP BY
中的描述:SELECT
如果有歧义,GROUP BY 名称将被解释为输入列名称而不是输出列名称。
即creation_time
不是那个,是time_bucker
表达式的别名。因此错误。
一种解决方法是使用 SELECT 子句中列的位置:
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 1, 2;
推荐阅读
- mysql - 来自 Google 脚本的 jdbc 连接错误
- git - git 分支中的案例管理
- node.js - 公会成员添加 discord.js
- html - 如何在引导程序 4 中的大屏幕上并排放置列并在小屏幕上放置列?
- java - 如何在 Android 上禁用 Firestore 的持久性(缓存)
- c# - Blazor 使用 Rout 参数作为方法参数
- python - 我无法摆脱数据框中的双标头
- apache - .htaccess 301 重定向页面特定 + 通配符其余
- mysql - mysql 错误 #1054 - '字段列表' 中的未知列 'FOREIGN_KEY_CHECKS'
- html - SVG 修复填充大小