Обновить

Комментарии 4

Сделал как-то один трудоёмкий отчёт на инкрементальном MV и честно говоря эксперимент считаю неудачным.

По сути это просто ETL-процесс вставки из source.table -> target.table который отрабатывает моментально, при этом посмотреть логи вставок довольно сложно (а для аналитиков - невозможно, прав нет), нужно верить что оно работает правильно (пока, правда, уже как полгода работает исправно))).

Какие есть проблемы:
- в источник пришло что-то не то = оно моментально вставилось
- нужно перезагрузить часть данных? удаляй из источника и заново инициируй вставку

И вот из-за этого как будто проще сделать вставки\расчёты именно на уровне ETL-процесса, а не на уровне MV..

Или вот решил сделать самую простую табличку - логин и дата его регистрации (из таблицы событий):

CREATE MATERIALIZED VIEW schema_mv.login_agg_reg TO schema_table.login_agg_reg
(
login String,
min_reg_dt AggregateFunction(min, Date)
)
AS SELECT
login,
minState(toDate(reg_dt)) AS min_reg_dt
FROM schema_src.login
GROUP BY login;


Могу ли я посмотреть что в результирующей таблице? Нет, над ней надо делать view (что не особо удобно как по мне):

CREATE VIEW schema_view.login_agg_reg
(
login String,
min_reg_dt Date
)
AS SELECT
login,
minMerge(min_reg_dt) AS min_reg_dt
FROM schema_table.login_agg_reg
GROUP BY login;


В общем повторять это я не стану))) видимо под мои задачи не подходит (или я просто не распробовал прелесть MV).

PS. а вот если аналитик создаст кривое MV над таблицей - то там вообще ETL-процесс процесс загружающий в src.table падает, пришлось писать скрипт поиска и удаления кривых MV...

PPS. поэтому поставил аналитикам Zeppelin (с ним тоже проблем не оберешься, но это уже совсем другая история), включил в нём cron и настало всем счастье)

Привет) MV действительно подходят не для всех задач, но когда строишь real-time аналитику на клике, то без них никак.

А есть такая механика для Update? Или только Insert?

Конкретно у MV такой механики нет. Для этого существуют механизмы захвата изменений (CDC). Обычно они используются, когда в ClickHouse нужно тянуть все обновления из транзакционных БД. Часто это реализуют через Debezium.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации