
Комментарии 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?
ClickHouse: автоматизируем расчеты с помощью Materialized View