@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;
отрабатывает нормально и дубликаты исчезают.
Неужели каждый раз его прогонять нужно будет?

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

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


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

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

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект