在 PSQL 中从包含 JSONB 的表创建物化视图

问题描述

您好,提前感谢您的帮助,

我正在尝试使用具有以下结构的 python 库 psycopg2 使用 Psql 创建物化视图:

false

我想从中创建物化视图的表是使用以下查询创建的:

<materialized_view name>
 time TIMESTAMPTZ NOT NULL,robot_id TEXT,data JSONB

然后,为了测试是否可以生成输出与物化视图结构相同的查询,我执行了以下查询

CREATE TABLE IF NOT EXISTS mainTable (
 time TIMESTAMPTZ NOT NULL,data JSONB);

最后一个查询输出符合预期,可以在这里看到: Result of running the previous query

但是,当我想包含相同的查询以创建物化视图时,我在使用 GROUP BY 时遇到了一些我不知道如何解决错误

我用来创建物化视图的查询如下:

SELECT time_bucket('30s',time) as Bucket,robot_id,json_build_object('value',avg((data->>'value')::numeric),'field',data->>'field') as data
FROM mainTable
WHERE time >= '2021-05-20 09:00:00' AND time <= '2021-05-20 10:00:00'
GROUP BY data->>'field',bucket,robot_id
ORDER BY 1
LIMIT 10;

当我运行此命令时,物化视图已正确创建,但是当我运行查询时:

CREATE MATERIALIZED VIEW IF NOT EXISTS mainTable_1sec
                             WITH (timescaledb.continuous) AS
                             SELECT time_bucket('1s',json_build_object('field',data->>'field','value',avg(cast(data->>'value' as double precision))) as avg_data,robot_id
                             FROM mainTable
                             GROUP BY Bucket,robot_id
                             WITH NO DATA;

我收到以下错误

SELECT * 
FROM mainTable_1sec 
LIMIT 10;

再次感谢您的帮助,

乔迪。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)