Сделайте управляемый backfill с границей между историей и новым потоком. Каскадная MV видит вставленные блоки, а не итог дедупликации ReplacingMergeTree.
Как бы вы поступили с цепочкой Materialized View через промежуточную ReplacingMergeTree-таблицу, чтобы корректно наполнить данные, уже существующие до запуска новой MV?
Сделайте управляемый backfill с границей между историей и новым потоком. Каскадная MV видит вставленные блоки, а не итог дедупликации ReplacingMergeTree.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Сделайте управляемый backfill с границей между историей и новым потоком. Каскадная MV видит вставленные блоки, а не итог дедупликации ReplacingMergeTree.
Для истории получите актуальное состояние промежуточной таблицы через FINAL или явный выбор версии и отдельно рассчитайте целевой слой. Согласуйте остановку записи либо надёжный offset/cutoff, чтобы диапазоны backfill и live-потока не пересеклись и не оставили пробел. Не полагайтесь на фоновые merges: они не отправляют в следующую MV исправления старых агрегатов. Проверьте итоги по ключам до переключения.
Источник: clickhouse.com, clickhouse.com.