Аналитика
Модель данных
Какие данные собирать, как нормализовать и хранить для аналитики Karometr.
Модель данных и контур загрузки
1. Источники данных
- DMS дилеров: контракты, расторжения, складские остатки.
- Справочники дилеров/брендов/моделей (контролируемые словари).
- Внешние макроисточники (опционально): курс валют, ставка, отраслевые индикаторы.
2. Обязательные сущности
fact_contracts: все события по контрактам.fact_cancellations: расторжения и причины.fact_inventory_snapshot: дневной снимок остатков.dim_date: календарь и сезонные признаки.dim_dealer,dim_region,dim_brand,dim_model_family,dim_model_generation.model_code_mapping: соответствие кода источника и нормализованной модели.
3. Обязательные поля (минимум)
- Ключи:
event_id,source_system,source_row_id,event_ts,load_ts. - Бизнес-ключи:
dealer_id,region_id,brand_id,model_family_id,model_generation_id. - Поля сопоставления модели:
source_model_code,source_model_name,model_family_name,generation,restyle_flag. - Качество:
is_valid,dq_error_code,record_hash,auto_fix_applied.
4. Конвейер данных и слои хранения
raw: неизменённые данные в исходной структуре.staging: дедупликация, типизация, нормализация справочников.core: согласованные факты и измерения.mart: агрегаты под KPI, отчёты, прогнозы.
5. Частота обновлений
- Единый суточный импорт данных: ежедневно в окне
23:00-04:00. - Пересчёт индексов и витрин: ежедневно в окне
04:00-06:00. - Макро-факторы: 1 раз в сутки или по публикации (вне критического пути индексов).
6. Контроль качества данных (показатели DQ)
- Completeness: доля заполненных обязательных полей.
- Uniqueness: отсутствие дублей по бизнес-ключу и дате события.
- Timeliness: задержка поступления относительно SLA.
- Validity: корректные диапазоны цены/скидки/количества.
- Consistency: одинаковые значения в разных источниках по одинаковым ключам.
- Dictionary Match: контроль соответствия кода модели и справочника семейства/поколения.
Формулы DQ:
completeness = filled_required_fields / total_required_fields
uniqueness = 1 - duplicates_count / total_records
timeliness = records_within_sla / total_records
validity = valid_records / total_records
consistency = matched_cross_source_records / compared_records
7. Версионирование данных
- Любая смена формулы KPI фиксируется в журнале версий.
- Для каждой витрины хранится
calculation_version. - Пересчёты backfill выполняются пакетно с логом отличий до/после.
8. Подключение нового дилера (onboarding)
- При подключении выполняется первичная историческая загрузка за согласованный период.
- Данные проходят дедупликацию, нормализацию и сопоставление со справочниками.
- После завершения backfill запускается пересчёт индексов за весь загруженный период.
- Далее дилер переводится на ежедневный автоматический цикл загрузки.