docs(manual): обновлена структура проекта и добавлены задания

- Зачем:
  - необходимо отразить в документации новый пайплайн загрузки CSV в PostgreSQL.
  - студентам нужны конкретные задания для закрепления навыков ETL и Data Quality.
- Что:
  - обновлен README.md: добавлено описание новых DAG-ов, папок sql/ и tests/, актуализирован путь обучения.
  - обновлен educational-tasks.md: добавлены 4 новых задания (ETL, PostgresOperator, DQ проверки, Trigger Rules) и обновлен блок оценки прогресса.
- Проверка:
  - визуальная проверка файлов README.md и educational-tasks.md в репозитории.
This commit is contained in:
2026-03-08 20:31:08 +03:00
parent 69c9532bb2
commit 24ee9f65f0
2 changed files with 72 additions and 5 deletions
+14 -3
View File
@@ -96,9 +96,17 @@ airflow-docker/
│ ├── hello_world_dag.py # Базовый пример │ ├── hello_world_dag.py # Базовый пример
│ ├── sql_basic_dag.py # Работа с SQL │ ├── sql_basic_dag.py # Работа с SQL
│ ├── file_operations_dag.py # Обработка файлов │ ├── file_operations_dag.py # Обработка файлов
│ ├── data_processing_dag.py # ETL пайплайн │ ├── csv_to_postgres.py # Загрузка CSV в Postgres (ETL)
│ ├── csv_to_postgres_dq.py # Проверки качества данных (DQ)
│ ├── data_processing_dag.py # Сложный ETL пайплайн
│ ├── branching_dag.py # Условная логика │ ├── branching_dag.py # Условная логика
│ └── error_handling_dag.py # Обработка ошибок │ └── error_handling_dag.py # Обработка ошибок
├── helpers/ # Вспомогательные скрипты
│ └── postgres.py # Функции для работы с БД и DQ
├── tests/ # Unit-тесты для хелперов
│ └── test_postgres_helpers.py # Тестирование DQ проверок
├── sql/ # SQL скрипты и DDL
│ └── base/ # Базовые DDL таблиц
├── data/ # Данные для упражнений ├── data/ # Данные для упражнений
│ ├── input/ # Входные данные │ ├── input/ # Входные данные
│ └── output/ # Результаты обработки │ └── output/ # Результаты обработки
@@ -129,6 +137,8 @@ airflow-docker/
**Примеры DAG:** **Примеры DAG:**
- `file_operations_dag.py` - работа с файлами - `file_operations_dag.py` - работа с файлами
- `csv_to_postgres.py` - загрузка данных из CSV в PostgreSQL
- `csv_to_postgres_dq.py` - автоматизированные проверки качества (Data Quality)
- `data_processing_dag.py` - ETL процессы - `data_processing_dag.py` - ETL процессы
### Продвинутые возможности ### Продвинутые возможности
@@ -159,8 +169,9 @@ airflow-docker/
1. **Начните с `hello_world_dag.py`** - освоите основы Airflow 1. **Начните с `hello_world_dag.py`** - освоите основы Airflow
2. **Перейдите к `sql_basic_dag.py`** - изучите работу с базами данных 2. **Перейдите к `sql_basic_dag.py`** - изучите работу с базами данных
3. **Попрактикуйтесь на `file_operations_dag.py`** - работа с файлами 3. **Попрактикуйтесь на `file_operations_dag.py`** - работа с файлами
4. **Освойте ETL на `data_processing_dag.py`** - обработка данных 4. **Освойте ETL и DQ на `csv_to_postgres.py` и `csv_to_postgres_dq.py`** - загрузка и валидация данных
5. **Изучите продвинутые темы** - ветвление и обработка ошибок 5. **Разберите сложный ETL на `data_processing_dag.py`** - обработка данных
6. **Изучите продвинутые темы** - ветвление и обработка ошибок
Каждое задание содержит: Каждое задание содержит:
- Цель и сложность выполнения - Цель и сложность выполнения
+58 -2
View File
@@ -128,6 +128,63 @@
--- ---
## 🐘 Задания для csv_to_postgres.py
**Цель:** Освоить паттерны загрузки данных (ETL) из файлов в базу данных и применение XCom.
### Задание 1: Расширение структуры данных
**Сложность:** 🟢 Начальная
**Время выполнения:** 15-20 минут
**Задача:**
- Добавьте в генератор CSV новую колонку `status` (например, со случайными значениями 'NEW', 'PROCESSING', 'COMPLETED').
- Обновите функцию `_create_table`, чтобы учесть новую колонку.
- Запустите DAG и проверьте, что данные успешно загрузились с новой колонкой.
**Цель задания:** Понять процесс изменения схемы данных на всех этапах пайплайна.
### Задание 2: Использование PostgresOperator
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Перепишите задачу `create_orders_table`. Сейчас она использует `PythonOperator` и прямое подключение через `psycopg2`.
- Замените её на использование стандартного `PostgresOperator`, используя заранее созданный Connection.
- Убедитесь, что пайплайн продолжает работать корректно.
**Цель задания:** Научиться использовать специализированные операторы для работы с БД вместо кастомного Python-кода.
---
## 🛡️ Задания для csv_to_postgres_dq.py
**Цель:** Освоить подходы к обеспечению качества данных (Data Quality) в Airflow.
### Задание 1: Новая проверка качества
**Сложность:** 🟡 Средняя
**Время выполнения:** 20-25 минут
**Задача:**
- Добавьте новую функцию проверки в `helpers/postgres.py`, которая будет убеждаться, что все значения в колонке `amount` строго больше нуля.
- Добавьте вызов этой функции как новую задачу в DAG `csv_to_postgres_dq`.
- Встройте новую задачу в общую цепочку выполнения (например, перед `dq_summary`).
**Цель задания:** Научиться расширять набор проверок качества данных.
### Задание 2: Управление статусом при ошибках (Trigger Rules)
**Сложность:** 🟠 Продвинутая
**Время выполнения:** 25-30 минут
**Задача:**
- Смоделируйте ошибку (например, временно измените данные так, чтобы проверки не прошли).
- По умолчанию, если падает одна проверка, следующие не выполняются (поведение `all_success`).
- Измените параметры задач так (с помощью `trigger_rule`), чтобы выполнялись *все* проверки, даже если некоторые из них упали.
- Сделайте так, чтобы задача `dq_summary` могла анализировать статусы предыдущих задач и отражать общий итог.
**Цель задания:** Освоить продвинутую маршрутизацию статусов задач с помощью `trigger_rule`.
---
## 🔄 Задания для data_processing_dag.py ## 🔄 Задания для data_processing_dag.py
**Цель:** Освоить ETL процессы и работу с бизнес-логикой. **Цель:** Освоить ETL процессы и работу с бизнес-логикой.
@@ -297,7 +354,6 @@
## 📊 Оценка прогресса ## 📊 Оценка прогресса
- 🟢 **Начальный уровень:** Выполнены задания для hello_world_dag и sql_basic_dag - 🟢 **Начальный уровень:** Выполнены задания для hello_world_dag и sql_basic_dag
- 🟡 **Средний уровень:** Выполнены задания для file_operations_dag и data_processing_dag - 🟡 **Средний уровень:** Выполнены задания для file_operations_dag, csv_to_postgres.py, csv_to_postgres_dq.py и data_processing_dag
- 🟠 **Продвинутый уровень:** Выполнены все задания, включая branching_dag, error_handling_dag и дополнительные задания по пулам, XCom, TaskGroup и алертингу - 🟠 **Продвинутый уровень:** Выполнены все задания, включая branching_dag, error_handling_dag и дополнительные задания по пулам, XCom, TaskGroup и алертингу
Удачи в изучении Apache Airflow! 🚀 Удачи в изучении Apache Airflow! 🚀