🔹 Дубли и дедупликация: практическое 🔹 Как найти и удалить duplicate при загрузке данных? 🔸 Дубли появляются когда одна и та же сущность попадает в поток несколько раз — это ломает агрегаты, нарушает уникальные ключи и увеличивает хранилище.
🔸 distinct (DISTINCT) убирает полные повторы строк на чтении, но сравнивает весь набор столбцов и на больших объёмах будет дорогим по времени и памяти.
🔸 Используйте row_number (ROW_NUMBER()) чтобы пометить повторяющиеся группы по ключу и оставить одну запись по правилу (например, самая свежая). Пример:
WITH dedup AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id, email ORDER BY updated_at DESC) AS rn FROM stg.table ) SELECT * FROM dedup WHERE rn = 1;
🔸 hash ускоряет сравнение: вычисляйте hash ключевых колонок (например md5), группируйте по hash или джойтесь по нему, но всегда проверяйте возможные коллизии для критичных данных.
📚 DISTINCT — просто; row_number — для правил "оставить одну"; hash — для оптимизации на больших данных.
➡️ Мы в Telegram - Сетке - ВК Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки