Качество данных
Управление качеством данных в платформе Kruma основано на стандартах DAMA-DMBOK и реализовано через исполняемые правила в quality_rules.yml.
Измерения качества
| Компонент | Реализация в Kruma |
| Измерения качества | Определены в quality_rules.yml: точность, полнота, согласованность, своевременность, корректность |
| Правила качества | Исполняемые утверждения в каждом контракте |
| Метрики | Prometheus-метрики из Quality Validator |
| Мониторинг | Grafana-дашборды с пороговыми значениями |
| Анализ первопричины | Анализ DLQ с категоризацией ошибок |
Маппинг на DMBOK
Правила Quality Validator реализуют 6 измерений качества данных по DAMA-DMBOK (DAMA UK 2013):
| Измерение DMBOK | Определение | Типы правил Kruma |
| Полнота (Completeness) | Доля присутствующих данных от потенциально возможных 100% | NOT_NULL |
| Уникальность (Uniqueness) | Ни один экземпляр сущности не записан более одного раза | UNIQUE |
| Своевременность (Timeliness) | Данные отражают реальность на требуемый момент времени | FRESHNESS |
| Корректность (Validity) | Данные соответствуют синтаксису определения (формат, тип, диапазон) | RANGE, REGEX, FORMAT, ENUM |
| Точность (Accuracy) | Данные верно описывают объект или событие реального мира | CUSTOM, SQL, REFERENCE |
| Согласованность (Consistency) | Отсутствие различий при сравнении представлений | CUSTOM (кросс-полевая валидация) |
Примеры правил по измерениям
Полнота
# Проверка обязательных полей
- name: "order_id_not_null"
field: "order_id"
type: "not_null"
severity: "error"
message: "order_id is required"
Корректность
# Допустимые значения (enum)
- name: "status_valid"
field: "status"
type: "enum"
values: ["draft", "pending", "confirmed", "shipped"]
severity: "error"
# Числовой диапазон
- name: "amount_positive"
field: "total_amount"
type: "range"
min: 0
severity: "error"
# Формат (regex)
- name: "email_format"
field: "customer_email"
type: "format"
format: "email"
severity: "warning"
Своевременность
# Свежесть данных
- name: "data_freshness"
field: "created_at"
type: "freshness"
max_age_minutes: 60
severity: "error"
message: "Data older than 1 hour"
Согласованность
# Кросс-полевая валидация
- name: "total_equals_sum"
field: "quantity_total"
type: "custom"
expression: "quantity_total == quantity_available + quantity_reserved"
severity: "error"
Уровни критичности
| Severity | Эффект | Когда использовать |
| error | Запись → DLQ | Критичные проблемы, обязательные поля |
| warning | Запись проходит, лог | Некритичные, best-effort поля |
| info | Только метрики | Мониторинг, observability |
Запись ──▶ Есть error? ──Да──▶ DLQ
│
Нет
│
Есть warning? ──Да──▶ Лог + PROD
│
Нет
│
──▶ PROD
Дополнительные материалы