DAGs de Airflow

Introducción a Apache Airflow en Python

Mike Metzger

Data Engineer

¿Qué es un DAG?

DAG, o Directed Acyclic Graph (grafo acíclico dirigido):

  • Directed: hay un flujo que representa dependencias entre componentes.
  • Acyclic: no tiene bucles/ciclos/repeticiones.
  • Graph: el conjunto de componentes.
  • Usado en Airflow, Apache Spark, dbt

DAG

1 https://en.m.wikipedia.org/wiki/Directed_acyclic_graph
Introducción a Apache Airflow en Python

DAG en Airflow

En Airflow, los DAGs:

  • Se escriben en Python (pero pueden usar componentes en otros lenguajes).
  • Se componen de elementos (típicamente tareas) a ejecutar: operadores, sensores, etc.
  • Contienen dependencias definidas de forma explícita o implícita.
    • Ej.: copia el archivo al servidor antes de importarlo al servicio de base de datos.
Introducción a Apache Airflow en Python

Definir un DAG

Ejemplo de DAG:

from airflow import DAG

from datetime import datetime default_arguments = { 'owner': 'jdoe', 'email': '[email protected]', 'start_date': datetime(2020, 1, 20) }
with DAG('etl_workflow', default_args=default_arguments ) as etl_dag:
Introducción a Apache Airflow en Python

Definir un DAG (antes de Airflow 2.x)

Ejemplo de DAG:

from airflow import DAG

from datetime import datetime default_arguments = { 'owner': 'jdoe', 'email': '[email protected]', 'start_date': datetime(2020, 1, 20) }
etl_dag = DAG('etl_workflow', default_args=default_arguments )
Introducción a Apache Airflow en Python

DAGs en la línea de comandos

Uso de airflow:

  • El programa de línea de comandos airflow tiene muchos subcomandos.
  • airflow -h muestra descripciones.
  • Muchos se relacionan con DAGs.
  • airflow dags list muestra todos los DAGs detectados.
Introducción a Apache Airflow en Python

Línea de comandos vs. Python

Usa la línea de comandos para:

  • Iniciar procesos de Airflow
  • Ejecutar DAGs/Tareas manualmente
  • Obtener logs de Airflow

Usa Python para:

  • Crear un DAG
  • Editar propiedades individuales de un DAG
Introducción a Apache Airflow en Python

¡Vamos a practicar!

Introducción a Apache Airflow en Python

Preparing Video For Download...