Задать вопрос
@namee

Как в clickhouse игнорировать или заменять повторяющиеся данные?

Доброго дня.
Собственно вопрос прост.
Фрагмент таблицы

...
`id` String,
`install_time` DateTime
)
ENGINE = ReplacingMergeTree
ORDER BY (id, install_time)

запрос на вставку самый простой
INSERT INTO installs (f1,f2) values (v1,v2)

но записи внезапно дублируются.

причём запрос OPTIMIZE TABLE installs DEDUPLICATE;
отрабатывает нормально и дубликаты исчезают.
Неужели каждый раз его прогонять нужно будет?

Или есть способ как научить таблицу пропускать или заменять дубли?
  • Вопрос задан
  • 801 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
Из документации ClickHouse
Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.

Таким образом, ReplacingMergeTree подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантии отсутствия дубликатов.


В запросе делайте группировку по ключу сортировки, если важно получать данные без дубликатов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы