想要在 clickhouse DB 上创建物化视图,下面是我的 sqlQuery :
CREATE MATERIALIZED VIEW IF NOT EXISTS tutorial.AL_DEMAND_views02
REFRESH EVERY 1 MINUTE
ENGINE = ReplacingMergeTree()
ORDER BY "Month"
POPULATE
AS
SELECT
"Month",
SUM("Values") AS "Values"
FROM
(SELECT * FROM (select * from tutorial.AL_DEMAND))
GROUP BY
"Month";
Error I got :
SQL Error [344] [07000]: Code: 344. DB::Exception: Refreshable materialized views are experimental. Enable allow_experimental_refreshable_materialized_view to use. (SUPPORT_IS_DISABLED) (version 23.12.3.40 (official build))
, server ClickHouseNode [uri=http://XX.XX.X.XX:8123/default, options={use_server_time_zone=false,use_time_zone=false}]@-543127256
从 DBEaver 我能够创建视图,因为我可以一次运行 2 个查询,下面是正在创建视图的查询。
SET allow_experimental_refreshable_materialized_view = 1;
CREATE MATERIALIZED VIEW IF NOT EXISTS tutorial.AL_DEMAND_views02
REFRESH EVERY 1 MINUTE
ENGINE = ReplacingMergeTree()
ORDER BY "Month"
POPULATE
AS
SELECT
"Month",
SUM("Values") AS "Values"
FROM
(SELECT * FROM (select * from tutorial.AL_DEMAND))
GROUP BY
"Month";
从 Java 代码中,如何创建物化视图
您可以使用用户配置文件或使用
set
命令启用此设置,但对于设置命令,您需要使用连接字符串中的 session_id 设置启用持久会话。
无论如何,最简单的方法是使用默认配置文件:
# cat /etc/clickhouse-server/users.d/allow_experimental_refreshable_materialized_view.xml
<?xml version="1.0" ?>
<clickhouse>
<profiles>
<default>
<allow_experimental_refreshable_materialized_view>1</allow_experimental_refreshable_materialized_view>
</default>
</profiles>
</clickhouse>
session_id:https://github.com/ClickHouse/clickhouse-java/issues/1017