Как вы следили за версиями данных и моделей на проекте?

«Как вы следили за версиями данных и моделей на проекте?» — вопрос из категории Моделирование данных и DWH, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В проектах по моделированию данных и DWH я использовал комбинацию инструментов для контроля версий:

1. Git для кода ETL/ELT и DDL

Все скрипты преобразования данных, определения таблиц и представлений хранились в Git с четкой структурой веток:

  • main — продакшен-версия
  • develop — активная разработка
  • feature/* — новые витрины или изменения ETL
  • release/* — подготовка к деплою

2. DVC (Data Version Control) для версионирования данных и ML-моделей

Для отслеживания изменений в датасетах, обученных моделях и фичах:

# Инициализация DVC в проекте
dvc init

# Добавление датасета под контроль версий
dvc add data/raw/sales_2024.csv
# Создается файл sales_2024.csv.dvc с хэшем

git add data/raw/sales_2024.csv.dvc .gitignore
git commit -m "feat: add raw sales data for 2024"

# Загрузка в удаленное хранилище (S3 в нашем случае)
dvc remote add -d myremote s3://mybucket/dvc-storage
dvc push

3. Тегирование релизов в DWH

Для значимых изменений в структуре данных создавал теги:

# После миграции, добавляющей новую витрину
git tag -a v2.3.0 -m "Release: добавлена витрина customer_lifetime_value"
git push origin v2.3.0

4. Ведение changelog для данных

В CHANGELOG.md фиксировал:

## [2.3.0] - 2024-03-15
### Added
- Новая витрина `mart_customer_lifetime_value`
- Поле `customer_segment` в `dim_customers`

### Changed
- Оптимизирован ETL для ежедневных продаж (ускорение на 40%)
- Обновлена логика расчета RFM-сегментов

5. Инструменты мониторинга

  • Great Expectations для проверки качества данных после каждого ETL
  • Dagster или Airflow для оркестрации и отслеживания выполнения
  • Metabase дашборды для мониторинга метрик данных (полнота, свежесть, консистентность)