Definiera en @task.branch
Efter att ha lärt dig om kraften i villkorsstyrd logik i Airflow vill du testa dekoratorn @task.branch. Du vill köra en annan kodsökväg om det aktuella körningsdatumet representerar ett nytt år (dvs. 2026 jämfört med 2025).
Dag:en är redan definierad åt dig, tillsammans med de berörda uppgifterna. Din uppgift nu är att implementera @task.branch.
Den här övningen är en del av kursen
Introduktion till Apache Airflow i Python
Övningsinstruktioner
- Lägg till lämpliga Airflow-datummallarvariabler som parametrar till
year_checkför att jämföra aktuellt och föregående körningsår. - Tilldela
current_yearochprevious_yeargenom att skära ut de första 4 tecknen från varje datumparameter. - Ange beroenden för
current_year_taskochnew_year_task.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
@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