Ramificação

Introdução ao Apache Airflow em Python

Mike Metzger

Data Engineer

Ramificação

  • Traz lógica condicional (ex.: if -> then para tarefas)
  • Usando @task.branch

  • Executa uma função Python que retorna o id da próxima tarefa (ou lista de ids) a seguir

Introdução ao Apache Airflow em Python

Exemplo de ramificação

@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'
Introdução ao Apache Airflow em Python

Exemplo de ramificação

@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
Introdução ao Apache Airflow em Python

Visualização do grafo de ramificação

Visualização em grafo do Airflow de um Dag ramificado com dois caminhos downstream

Introdução ao Apache Airflow em Python

Ramificação Meses de fim de trimestre

Visualização em grafo do Airflow com tarefas de fim de trimestre executadas e mensais puladas

Introdução ao Apache Airflow em Python

Ramificação Meses normais

Visualização em grafo do Airflow com as tarefas mensais normais executadas e as de fim de trimestre puladas

Introdução ao Apache Airflow em Python

Variáveis de data

  • ds - Data lógica com hífens YYYY-MM-DD
  • ds_nodash - Data lógica sem hífens YYYYMMDD
  • prev_data_interval_start_success - Data do último Dag bem-sucedido
  • Muitos outros - veja a documentação de variáveis do Airflow
1 https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html#templates-variables
Introdução ao Apache Airflow em Python

Vamos praticar!

Introdução ao Apache Airflow em Python

Preparing Video For Download...