После JOIN метрика стала завышенной, и аналитик добавил distinct ко всей таблице, чтобы «убрать дубли». Почему это рискованный подход?

AПотому что distinct всегда приводит к join explosion
BПотому что distinct может скрыть проблему cardinality и удалить валидные строки; лучше устранить источник duplication и или pre-aggregate на нужном уровне
CПотому что distinct делает данные числовыми
DПотому что distinct запрещён для one-to-one
Правильный ответ. distinct — плохой «пластырь» на проблему cardinality, потому что он не гарантирует корректность метрики.

Разбор

distinct удаляет одинаковые строки, но одинаковость строк не всегда совпадает с понятием «лишнее дублирование». Он может случайно выбросить реальные повторяющиеся события или позиции, и метрика станет заниженной. Гораздо надёжнее понять, где возникла duplication, и выбрать правильный pre-aggregate или ключ JOIN.

Проверь себя · 1/3разбор после ответа
Хотите посчитать конверсию «пользователь посмотрел товар → пользователь купил» по user_id. Данные: events (много просмотров на пользователя) и orders (много заказов на пользователя). Что корректнее всего сделать, чтобы избежать many-to-many искажения?
Открыть Карьерник в Telegram

Ещё вопросы по теме «JOIN и кардинальность»