184 похожих чатов

Товарищи, подскажите, пожалуйста. Есть таблица в КХ, там есть дубли строк

- полные дубли, включая sorting key.
Общий размер таблицы 1-20 миллионов строк. Количество дублей: до 100 тыс строк всего, в их числе строки, которые повторяются 2-3 раза.
Как вычистить?

Проблема в том, что я не могу никак таргетировать запрос на конкретную строку из числа дублированных строк - у них идентичные ВСЕ атрибуты. Какой бы критерий я не придумал - он затронет все дубли.

Единственное, что приходит в голову - написать запрос SELECT во временную чистую таблицу, сделать группировку ПО ВСЕМ полям. Тогда все дубли схлопнутся и будет выборка по 1 уникальной копии. Ну и потом в оригинале удалить все строки, чьи айдюки есть во временной и перенести назад.

Есть ли проще решения?

5 ответов

10 просмотров

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 *

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

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
например asm AT&T ... label: .string "hi" ... # not error lea label(%rip), %rax # error ( not compile ) mov %rip, %rax # not error mov (%rip), %rax из форумов прочитал чт...
Simple Sorcerer
6
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Есть предложения, как подобное можно упростить?
Hemul GM
12
Карта сайта