Измерения качества данных на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем разбирать на собесе

DQ frameworks — стандарт enterprise. На собесе DE: «как ты измеряешь quality», «6 dimensions».

6 измерений DQ

Стандартный framework (DAMA, ISO):

  1. Completeness — есть ли все нужные данные.
  2. Accuracy — правильны ли данные.
  3. Consistency — согласованы ли между источниками.
  4. Timeliness — свежие ли данные.
  5. Uniqueness — нет ли дубликатов.
  6. Validity — подходят ли формату.

Completeness

Какая доля missing values.

SELECT
  100.0 * COUNT(email) / COUNT(*) AS email_completeness,
  100.0 * COUNT(phone) / COUNT(*) AS phone_completeness
FROM customers;

SLA: «email completeness ≥ 99%».

Accuracy

Соответствуют ли данные real world.

Сложно измерить без ground truth. Часто — спот-чек:

  • Random sample, manual verify.
  • Reconciliation с trusted source.
-- example: verify revenue against accounting
SELECT day, SUM(amount) AS our_total
FROM orders GROUP BY day
-- compare with accounting export

Consistency

Между tables / источниками — same business entity should match.

-- example: total orders count must match
SELECT COUNT(*) FROM orders WHERE day = '2026-05-01';
SELECT SUM(orders_count) FROM daily_summary WHERE day = '2026-05-01';
-- they must be equal
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Timeliness

Когда данные доступны после event.

SLA: «данные за день D доступны к 09:00 D+1».

Метрики:

  • Lag. Time от event до availability.
  • Freshness. Time since last update.

dbt source freshness — как раз про это.

Uniqueness

Доля дубликатов.

SELECT
  COUNT(*) AS total,
  COUNT(DISTINCT customer_id) AS unique_count,
  100.0 * (COUNT(*) - COUNT(DISTINCT customer_id)) / COUNT(*) AS duplicate_rate
FROM customers;

SLA: «unique по customer_id = 100%».

Validity

Format / range checks.

  • Email matches regex.
  • Phone numbers — valid format.
  • Dates in reasonable range.
  • Enums — only known values.
  • Numbers ≥ 0 если applicable.
-- invalid email count
SELECT COUNT(*) FROM users
WHERE email NOT SIMILAR TO '%@%.%';

-- amounts in expected range
SELECT COUNT(*) FROM orders WHERE amount NOT BETWEEN 0 AND 1000000;

Связанные темы

FAQ

Какое dimension важнее?

Зависит от business. Финансы — accuracy. Real-time — timeliness. CRM — completeness.

Это официальная информация?

Нет. Статья основана на DAMA-DMBOK и ISO 8000.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.