Rẽ nhánh

Giới thiệu về Apache Airflow bằng Python

Mike Metzger

Data Engineer

Rẽ nhánh

  • Cung cấp logic điều kiện (ví dụ: if -> then cho tác vụ)
  • Dùng @task.branch

  • Chạy hàm Python trả về id tác vụ tiếp theo (hoặc danh sách id) để thực thi

Giới thiệu về Apache Airflow bằng Python

Ví dụ rẽ nhánh

@task.branch
def branch_task(logical_date):
  if int(logical_date.month) % 3 == 0:
    # Months 3 - March, 6 - June, 9 - September, 12 - December
    return 'end_of_quarter_task'
  else:
    # All other months
    return 'regular_monthly_task'
Giới thiệu về Apache Airflow bằng Python

Ví dụ rẽ nhánh

@task.branch
def branch_task(logical_date):
  if int(logical_date.month) % 3 == 0:
    # Months 3 - March, 6 - June, 9 - September, 12 - December
    return 'end_of_quarter_task'
  else:
    # All other months
    return 'regular_monthly_task'

start_task >> branch_task >> end_of_quarter_task >> end_of_quarter_task2
branch_task >> regular_monthly_task >> regular_monthly_task2
Giới thiệu về Apache Airflow bằng Python

Đồ thị rẽ nhánh

Chế độ xem đồ thị Airflow của một DAG rẽ nhánh với hai nhánh tác vụ phía sau

Giới thiệu về Apache Airflow bằng Python

Rẽ nhánh Tháng cuối quý

Chế độ xem đồ thị Airflow với tác vụ cuối quý chạy và tác vụ hằng tháng bị bỏ qua

Giới thiệu về Apache Airflow bằng Python

Rẽ nhánh Tháng thường

Chế độ xem đồ thị Airflow với các tác vụ hằng tháng chạy và tác vụ cuối quý bị bỏ qua

Giới thiệu về Apache Airflow bằng Python

Biến ngày

  • ds - Ngày logic có dấu gạch YYYY-MM-DD
  • ds_nodash - Ngày logic không dấu gạch YYYYMMDD
  • prev_data_interval_start_success - Ngày DAG gần nhất chạy thành công
  • Còn nhiều biến khác - xem tài liệu biến của Airflow
1 https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-variables
Giới thiệu về Apache Airflow bằng Python

Hãy thực hành!

Giới thiệu về Apache Airflow bằng Python

Preparing Video For Download...