開始使用免費開始

定義一個 @task.branch

在學完 Airflow 中條件邏輯的威力後,你想試試 @task.branch 裝飾器。你希望當目前的執行日期代表進入新的一年時(例如 2026 相較於 2025),走不同的程式碼路徑。

Dag 和相關任務都已替你定義好。你現在的工作是實作 @task.branch

本練習屬於課程

Python 中的 Apache Airflow 入門

檢視課程

練習說明

  • year_check 中加入合適的 Airflow 日期樣板變數作為參數,用來比較目前與前一次執行的年份。
  • 透過擷取每個日期參數的前 4 個字元,分別指定 current_yearprevious_year
  • 設定 current_year_tasknew_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
編輯並執行程式碼