Короткий ответ
Дубликаты искусственно завышают счётчики и суммы (двойной учёт клиентов), а пропуски в email могут занижать метрики, основанные на уникальности по этому полю; нужно выбрать надёжный ключ дедупликации и явно обработать пропуски до построения графиков.
Как это работает подробнее
Дашборды агрегируют «сырые» строки; дубли строк или некорректный ключ напрямую искажают счётчики, суммы и распределения на графиках.
Пример кода
query.sql
SELECT COUNT(*) AS total_rows,
COUNT(DISTINCT customer_id) AS unique_customers,
COUNT(*) FILTER (WHERE email IS NULL) AS missing_email
FROM customers;Что использовать на практике
- Рекомендация. Используйте в качестве ключа дедупликации стабильный идентификатор (например, customer_id), а не email, который может отсутствовать или быть общим.
- Рекомендация. Применяйте COUNT(DISTINCT key) вместо COUNT(*), где это уместно.
- Рекомендация. Явно решите и задокументируйте, как показывать пропуски (исключать или выносить в «Неизвестно»).
Подводные камни
- Риск. Использование COUNT(*) в предположении «одна строка — один клиент» без проверки дублей.
- Риск. Молчаливое исключение строк с NULL email, занижающее итоговые показатели.
- Риск. Отсутствие предупреждения о качестве данных для пользователей дашборда.