Почему мы не можем создать материализованное представление поверх другого представления в Clickhouse? - PullRequest
0 голосов
/ 09 мая 2020

A - таблица движка collapsingMergeTree

СОЗДАТЬ ПРОСМОТР A AS SELECT * FROM A final;

СОЗДАТЬ МАТЕРИАЛИЗИРОВАННЫЙ ПРОСМОТР a_mview1 TO B AS select id, name from A;

Это не работает, похоже, мы не можем сделать mview для просмотра ... но почему?

Ответы [ 2 ]

1 голос
/ 09 мая 2020

СОЗДАТЬ ПРОСМОТР A AS SELECT * FROM A final;

Это невозможно. Потому что MV никогда не читает исходную таблицу. MV получает вставленные блоки из команды INSERT.

0 голосов
/ 09 мая 2020

Нормальный Просмотр не хранит никаких данных (см. do c), поэтому использовать его в качестве источника данных для Materialized * 1006 неправильно. * Представление.

Необходимо создать материализованное представление на основе исходной таблицы:

CREATE TABLE A (
  ..
) ENGINE = CollapsingMergeTree
.. ;

CREATE MATERIALIZED VIEW a_mview1 TO B 
AS 
SELECT ..
FROM A
.. ;

См. Статью Материализованные представления ClickHouse с подсветкой для подробностей.

...