Karometr
Аналитика

Модель данных

Какие данные собирать, как нормализовать и хранить для аналитики Karometr.

Модель данных и контур загрузки

1. Источники данных

  1. DMS дилеров: контракты, расторжения, складские остатки.
  2. Справочники дилеров/брендов/моделей (контролируемые словари).
  3. Внешние макроисточники (опционально): курс валют, ставка, отраслевые индикаторы.

2. Обязательные сущности

  1. fact_contracts: все события по контрактам.
  2. fact_cancellations: расторжения и причины.
  3. fact_inventory_snapshot: дневной снимок остатков.
  4. dim_date: календарь и сезонные признаки.
  5. dim_dealer, dim_region, dim_brand, dim_model_family, dim_model_generation.
  6. model_code_mapping: соответствие кода источника и нормализованной модели.

3. Обязательные поля (минимум)

  1. Ключи: event_id, source_system, source_row_id, event_ts, load_ts.
  2. Бизнес-ключи: dealer_id, region_id, brand_id, model_family_id, model_generation_id.
  3. Поля сопоставления модели: source_model_code, source_model_name, model_family_name, generation, restyle_flag.
  4. Качество: is_valid, dq_error_code, record_hash, auto_fix_applied.

4. Конвейер данных и слои хранения

  1. raw: неизменённые данные в исходной структуре.
  2. staging: дедупликация, типизация, нормализация справочников.
  3. core: согласованные факты и измерения.
  4. mart: агрегаты под KPI, отчёты, прогнозы.

5. Частота обновлений

  1. Единый суточный импорт данных: ежедневно в окне 23:00-04:00.
  2. Пересчёт индексов и витрин: ежедневно в окне 04:00-06:00.
  3. Макро-факторы: 1 раз в сутки или по публикации (вне критического пути индексов).

6. Контроль качества данных (показатели DQ)

  1. Completeness: доля заполненных обязательных полей.
  2. Uniqueness: отсутствие дублей по бизнес-ключу и дате события.
  3. Timeliness: задержка поступления относительно SLA.
  4. Validity: корректные диапазоны цены/скидки/количества.
  5. Consistency: одинаковые значения в разных источниках по одинаковым ключам.
  6. 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. Версионирование данных

  1. Любая смена формулы KPI фиксируется в журнале версий.
  2. Для каждой витрины хранится calculation_version.
  3. Пересчёты backfill выполняются пакетно с логом отличий до/после.

8. Подключение нового дилера (onboarding)

  1. При подключении выполняется первичная историческая загрузка за согласованный период.
  2. Данные проходят дедупликацию, нормализацию и сопоставление со справочниками.
  3. После завершения backfill запускается пересчёт индексов за весь загруженный период.
  4. Далее дилер переводится на ежедневный автоматический цикл загрузки.