Измерения качества данных на собеседовании Data Engineer
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
DQ frameworks — стандарт enterprise. На собесе DE: «как ты измеряешь quality», «6 dimensions».
6 измерений DQ
Стандартный framework (DAMA, ISO):
- Completeness — есть ли все нужные данные.
- Accuracy — правильны ли данные.
- Consistency — согласованы ли между источниками.
- Timeliness — свежие ли данные.
- Uniqueness — нет ли дубликатов.
- 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 exportConsistency
Между 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 equalTimeliness
Когда данные доступны после 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;Связанные темы
- Great Expectations для DE
- dbt incremental models для DE
- Data lineage для DE
- Идемпотентность пайплайна для DE
- Подготовка к собесу Data Engineer
FAQ
Какое dimension важнее?
Зависит от business. Финансы — accuracy. Real-time — timeliness. CRM — completeness.
Это официальная информация?
Нет. Статья основана на DAMA-DMBOK и ISO 8000.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.