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:
@@ -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
|
||||
|
||||
**Цель:** Освоить ETL процессы и работу с бизнес-логикой.
|
||||
@@ -297,7 +354,6 @@
|
||||
## 📊 Оценка прогресса
|
||||
|
||||
- 🟢 **Начальный уровень:** Выполнены задания для 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 и алертингу
|
||||
|
||||
Удачи в изучении Apache Airflow! 🚀
|
||||
|
||||
Reference in New Issue
Block a user