让我们假设我们有一个像这样的表test_table
create table test_table(x integer);
是否可以从此表创建连续视图?像这样:
create continuous view test_view as select sum(x) as x_sum from test_table;
当我运行上述命令时,我收到错误:
test =#创建连续视图test_view,选择sum(x)作为来自test_table的x_sum; 错误:连续查询必须包含FROM子句中的流 第1行:... ous视图test_view作为来自test_table的选择总和(x)x_sum ... ^ 提示:要在连续查询中包含关系,请使用流加入它。
这是文档:
以下是创建连续视图的语法:
CREATE CONTINUOUS VIEW name AS query
其中query是PostgreSQL SELECT语句的子集:
SELECT [ DISTINCT [ ON ( expression [, ...] ) ] ]
expression [ [ AS ] output_name ] [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ WINDOW window_name AS ( window_definition ) [, ...] ]
其中from_item可以是以下之一:
stream_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
table_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
from_item [ NATURAL ] join_type from_item [ ON join_condition ]
根据这个from_item也可以是一张表。文档错了吗?如果无法从表中创建连续视图,有办法将当前数据从表加载到某个流。
答案 0 :(得分:1)
来自PipelineDB的Jeff。
您是否有理由尝试从这样的常规表创建连续视图?为什么不创建常规视图或物化视图?
PipelineDB旨在持续分析无限的原始数据流,这样数据就不需要存储为常规表,然后以临时方式处理,因此这个用例与PipelineDB的预期目的完全相反。
答案 1 :(得分:0)
对Jeff而言,物化视图可能已过时,常规视图不会带来任何性能上的好处。 因此,有理由从表中创建CONTINUOUS VIEW,并且根据文档,这应该是可能的。
所以假设这可以视为错误。