- полные дубли, включая sorting key.
Общий размер таблицы 1-20 миллионов строк. Количество дублей: до 100 тыс строк всего, в их числе строки, которые повторяются 2-3 раза.
Как вычистить?
Проблема в том, что я не могу никак таргетировать запрос на конкретную строку из числа дублированных строк - у них идентичные ВСЕ атрибуты. Какой бы критерий я не придумал - он затронет все дубли.
Единственное, что приходит в голову - написать запрос SELECT во временную чистую таблицу, сделать группировку ПО ВСЕМ полям. Тогда все дубли схлопнутся и будет выборка по 1 уникальной копии. Ну и потом в оригинале удалить все строки, чьи айдюки есть во временной и перенести назад.
Есть ли проще решения?
select distinct ?
В доке у https://clickhouse.tech/docs/en/query_language/misc/#misc_operations-optimize описано волшебное слово DEDUPLICATE, но 1) никогда не пользовался, поэтому неточно 2) если дубли на разных шардах, то точно не поможет 3) наверное совсем всё оно не схлопнет, но тут см. пункт 1
как вариант select any(value)
Движок какой у таблицы?
20млн. Просто переложить в новую таблицу с insert select distinct *
Обсуждают сегодня