Как работает материализованное представление
Вопрос
Создали материализованное представление над таблицей событий, существующей полгода. Почему в целевой таблице только данные после создания представления?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Представление пересчитывается по расписанию раз в сутки, поэтому история появится после ночного пересчёта
- MV в ClickHouse работает как триггер на вставку и обрабатывает только новые блоки; историю льют отдельноправильный ответ
- Целевая таблица MV по умолчанию хранит данные только за последние 24 часа, старое удаляется TTL
- Нужно выполнить REFRESH MATERIALIZED VIEW, как в PostgreSQL, и представление досчитает историю
Разбор
При каждой вставке в исходную таблицу блок прогоняется через запрос представления и записывается в целевую таблицу. Старые данные никто не прогонял, их заливают INSERT INTO target SELECT ... FROM source за прошлые периоды (с осторожностью к пересечению с новыми вставками). Ежедневного пересчёта у классических MV нет (есть отдельный тип refreshable MV, но это другое). Срок хранения целевой таблицы задаёт её TTL. Команда из PostgreSQL здесь не применима.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.