Определение @task.branch
Изучив возможности условной логики в Airflow, вы решили попробовать декоратор @task.branch. Цель — выполнять разный код в зависимости от того, является ли текущая дата выполнения началом нового года (например, 2026 против 2025).
DAG и соответствующие задачи уже определены за вас. Ваша задача — реализовать @task.branch.
Это упражнение является частью курса
Введение в Apache Airflow на Python
Инструкции к упражнению
- Добавьте подходящие шаблонные переменные дат Airflow в качестве параметров функции
year_check, чтобы сравнить текущий и предыдущий год выполнения. - Присвойте значения
current_yearиprevious_year, взяв первые 4 символа из каждого параметра даты. - Задайте зависимости для
current_year_taskиnew_year_task.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
@dag(start_date=datetime(2026,5,1), schedule='@monthly')
def process_yearly_expenses():
# Create a function to determine if years are different
@task.branch
def year_check(____, ____):
current_year = int(____[0:4])
previous_year = int(____[0:4])
if current_year == previous_year:
return 'current_year_task'
else:
return 'new_year_task'
# Define the dependencies
branch_task __ current_year_task
____ >> new_year_task