Bifurcation

Introduction à Apache Airflow en Python

Mike Metzger

Data Engineer

Bifurcation

  • Offre une logique conditionnelle (ex. : if -> then pour des tâches)
  • Utiliser @task.branch

  • Exécute une fonction Python qui retourne l'identifiant de la prochaine tâche (ou une liste d'identifiants) à suivre

Introduction à Apache Airflow en Python

Exemple de bifurcation

@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'
Introduction à Apache Airflow en Python

Exemple de bifurcation

@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
Introduction à Apache Airflow en Python

Vue graphique de la bifurcation

Vue graphique Airflow d'un DAG bifurqué avec deux chemins de tâches en aval

Introduction à Apache Airflow en Python

Bifurcation Fin de trimestre

Vue graphique Airflow où les tâches de fin de trimestre sont exécutées et les tâches mensuelles ignorées

Introduction à Apache Airflow en Python

Bifurcation Mois réguliers

Vue graphique Airflow où les tâches mensuelles régulières sont exécutées et celles de fin de trimestre ignorées

Introduction à Apache Airflow en Python

Variables de date

  • ds – Date logique avec traits d'union YYYY-MM-DD
  • ds_nodash – Date logique sans traits d'union YYYYMMDD
  • prev_data_interval_start_success – Date de la dernière exécution réussie du DAG
  • Plusieurs autres – voir la documentation des variables Airflow
1 https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-variables
Introduction à Apache Airflow en Python

Passons à la pratique !

Introduction à Apache Airflow en Python

Preparing Video For Download...