Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.
В каких случаях Materialized View в ClickHouse может пропустить данные или, наоборот, задублировать их?
Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.
Данные до создания MV требуют backfill. Изменения правой таблицы join и фоновые merges источника не запускают пересчёт уже записанного результата. Ошибки обработки нужно расследовать с учётом настроек вставки, а повторную отправку — проверять на дедупликацию всей цепочки. Особенно опасно считать, что ReplacingMergeTree в источнике автоматически удалит двойной вклад из агрегатной MV.
Источник: clickhouse.com.