lab8_etl

0

Описание

Лабораторная работа 8: Тестирование ETL пайплайна

Языки

  • Python98,4%
  • Java1,6%
4 месяца назад
4 месяца назад
README.md

lab8_etl

Лабораторная работа 8: Тестирование ETL пайплайна

Как запустить проект

Предварительные требования

  • Python 3.8 или новее (рекомендуется Python 3.9)
  • Установленный pip (менеджер пакетов Python)

Шаги для запуска:

  1. Клонируйте репозиторий

  2. Установите зависимости

  3. Запустите ETL пайплайн

  4. Запустите все тесты

  5. Или запустите тесты по отдельности

Какие тесты написаны

1. Базовые тесты ETL (
tests/test_etl.py
)

  • test_extract()
    - проверяет корректность извлечения данных из CSV
  • test_transform()
    - тестирует преобразования данных (добавление полей, категорий зарплат)
  • test_load()
    - проверяет загрузку данных в SQLite базу
  • test_data_quality()
    - базовые проверки качества данных (отсутствие пустых значений, валидные диапазоны)

2. Тесты качества данных (
test_data_quality.py
)

  • Проверка структуры данных (наличие всех колонок)
  • Уникальность идентификаторов
  • Отсутствие NULL значений в ключевых полях
  • Валидность диапазонов значений (возраст, зарплата)
  • Корректность категориальных данных (департаменты)

3. Тесты производительности (
test_performance.py
)

  • test_performance()
    - измерение времени выполнения ETL процесса
  • test_memory_usage()
    - контроль использования памяти

С какими проблемами столкнулись

Проблема 1: Несовместимость версий библиотек

Ошибка:

ValueError: numpy.dtype size changed, may indicate binary incompatibility

Причина: Конфликт версий между NumPy и Pandas из-за несовместимых бинарных интерфейсов.

Проблема 2: Импорт модулей в тестах

Ошибка: Модули не находились при запуске тестов через pytest

Причина: Неправильная структура проекта или пути импорта.

Проблема 3: Зависимости Great Expectations

Ошибка: Сложности с установкой всех зависимостей Great Expectations

Причина: Библиотека имеет много зависимостей, которые могут конфликтовать.

Как решили проблемы

Решение проблемы 1: Фиксация версий зависимостей

Заменили

requirements.txt
на конкретные совместимые версии:

Решение проблемы 2: Корректная структура проекта

  • Создали пакет
    tests
    с файлом
    __init__.py
  • Использовали относительные импорты где необходимо
  • Проверили структуру проекта согласно рекомендациям

Решение проблемы 3: Использование виртуального окружения

Рекомендовали создавать чистое виртуальное окружение:

Дополнительные решения:

  • Обновили pip перед установкой:
    pip install --upgrade pip
  • Использовали
    pip cache purge
    для очистки кеша при проблемах с установкой
  • Поэтапная установка библиотек для выявления конфликтующих зависимостей

В результате всех исправлений проект успешно запускается и все тесты проходят.