Качество данных для аналитика
Что такое Data Quality
Data Quality (качество данных) — совокупность характеристик, определяющих пригодность данных для задачи.
«Плохие данные» → «плохие решения». Для аналитика качество данных — критически важно.
Шесть измерений качества
1. Completeness (полнота)
Все ли данные присутствуют?
SELECT COUNT(*) FILTER (WHERE email IS NULL) * 100.0 / COUNT(*) FROM users;2. Accuracy (точность)
Соответствуют реальности?
Пример: если revenue в БД не сходится с банковской выпиской — accuracy проблема.
3. Consistency (консистентность)
Данные в разных местах согласованы?
orders.user_idссылается на существующегоusers.user_id?- Сумма в dashboard = сумма в raw events?
4. Timeliness (своевременность)
Данные свежие?
- ETL обновляется вовремя?
- Last timestamp недавний?
5. Validity (валидность)
Значения в допустимом формате?
- Email — валидный?
- Amount — положительный?
- Status — из списка?
6. Uniqueness (уникальность)
Нет дубликатов там, где не должно быть?
- PK уникален?
- Нет duplicate events?
Метрики качества данных
Null Rate
SELECT column_name, null_rate FROM (
SELECT 'email' AS column_name,
COUNT(*) FILTER (WHERE email IS NULL) * 100.0 / COUNT(*) AS null_rate
FROM users
);Мониторьте каждую важную колонку.
Duplicate Rate
SELECT COUNT(*) - COUNT(DISTINCT email) AS dups FROM users;Freshness
SELECT EXTRACT(EPOCH FROM (NOW() - MAX(created_at))) / 3600 AS hours_lag
FROM events;Schema conformance
# Проверка типов
assert df['amount'].dtype == 'float64'
assert df['created_at'].dtype.name.startswith('datetime')Попробовать силы на подобных вопросах проще всего в тренажёре Карьерник — прямо в Telegram, без регистрации через сайт.
Причины плохих данных
1. Трекинг сломан
Релиз приложения удалил event, pipeline ничего не логирует.
Решение: мониторинг event counts, алерты при резком изменении.
2. ETL глючит
Джоба упала, данные не обновились.
Решение: alerting в Airflow, retry logic.
3. Изменение источника
Добавилась колонка, изменился формат.
Решение: schema contracts, dbt tests.
4. Human error
Кто-то вручную изменил данные в production.
Решение: audit logs, read-only доступ к raw data.
5. Bots / spam
Накрутка событий ботами.
Решение: фильтрация, rate limiting, bot detection.
Best Practices
1. Принцип «Shift Left»
Проверяйте качество как можно раньше — на этапе ETL, а не когда уже в dashboard.
2. Documented schema
Каждая таблица должна иметь:
- Описание.
- Назначение каждой колонки.
- Ожидаемые типы и диапазоны.
- Primary Key, Foreign Keys.
3. Automated tests
-- dbt test
- unique
- not_null
- accepted_values
- relationshipsЗапускать при каждом pipeline run.
4. Observability
Dashboard «Health of Data»:
- % NULL по колонкам.
- Lag по таблицам.
- Duplicate rate.
- Volume (total rows per day).
5. Alerts
Slack/email при:
- NULL rate > threshold.
- Lag > expected.
- Сильный скачок / падение volume.
6. Data Contracts
Formal договор между data producer (backend team) и consumer (analytics):
- Schema не меняется без notification.
- SLA latency.
- Тесты валидности.
Roles и ownership
Data Engineer
Pipeline, ETL, infrastructure.
Analytics Engineer
dbt models, tests, documentation.
Analyst
Business logic, specific metrics validation.
Data Steward
Governance, policies.
В маленьких компаниях все эти роли смешиваются.
Инструменты
Testing
- dbt tests — в рамках dbt pipeline.
- Great Expectations — standalone.
- Soda Core — yaml-based.
- Deequ (Amazon) — Spark-based.
Monitoring
- Monte Carlo — commercial, data observability.
- Datafold — data diff для review PR.
- Custom Grafana dashboards — на своих данных.
Catalogs
- Atlan / Alation — enterprise catalog.
- DataHub (LinkedIn) — open-source.
- Amundsen (Lyft) — open-source.
Пройти 30–50 задач по теме за вечер можно в Telegram-тренажёре. Это то, что отличает «знаю» от «уверенно отвечу на собесе».
Metric для дашборда Data Quality
Data Health Score = weighted sum of:
- 30% Null rate acceptance
- 20% Freshness (lag < expected)
- 20% Duplicate rate
- 15% Schema conformance
- 15% Business rules validityСтремимся к 95%+ каждый день.
Что делать при обнаружении проблемы
Immediate
- Alert в Slack.
- Отметить в dashboard, что данные подозрительны.
- Не использовать для критичных решений.
Investigation
- Откуда проблема? (источник, ETL, pipeline).
- Насколько распространена? (одна колонка или все).
- С какого времени?
Fix
- Исправить источник проблемы.
- Backfill корректных данных.
- Notify stakeholders (что и когда исправили).
Post-mortem
- Почему не поймали раньше?
- Какие проверки добавить?
- Update runbook.
Читайте также
FAQ
Сколько времени уходит на data quality?
20–30% времени аналитика. В больших компаниях есть отдельные команды.
Кто отвечает?
Совместная ответственность: DE за pipeline, аналитик — за бизнес-правила.
Как убедить бизнес инвестировать в DQ?
Показать цену инцидентов: сколько было ошибочных решений из-за bad data. Один big wrong decision > год работы DQ-команды.
Что важнее — DQ или speed?
В стартапе speed > DQ. В enterprise DQ > speed. Баланс зависит от ценой ошибок.