Variables de Airflow

Introducción a Apache Airflow en Python

Mike Metzger

Data Engineer

¿Qué son las variables?

  • Útiles para valores de configuración
  • Rutas de archivos, endpoints de API, entornos, etc.
  • Se pueden consultar desde tareas, definir por código, en la UI de Airflow o por archivo
  • Existen fuera del código del Dag
Introducción a Apache Airflow en Python

Acceder a variables en la UI de Airflow

  • En el menú Admin: Variables

Interfaz de Airflow con el menú Admin abierto mostrando la opción Variables

Introducción a Apache Airflow en Python

Ver variables en la UI de Airflow

Página de Variables de Airflow con la lista vacía y sin variables definidas

Introducción a Apache Airflow en Python

Añadir una variable en Airflow

Página de Variables de Airflow con el botón Add Variable resaltado

Introducción a Apache Airflow en Python

Editor de variables

Formulario del editor de variables de Airflow con campos key, value y description

Introducción a Apache Airflow en Python

Variables presentes en la interfaz

Página de Variables de Airflow con una variable definida en la lista

Introducción a Apache Airflow en Python

Leer una variable en Python

  • Usa la librería airflow.sdk.Variable
  • Lee con Variable.get("variable_name")
    # Retrieve a plain string value
    my_region = Variable.get("region")
    
  • En este caso, my_region sería us-eastern
  • Indica un valor por defecto si la variable no existe
    # Provide a fallback if the variable doesn't exist
    env = Variable.get("current_environment", default=None)
    
  • Como no definimos current_environment, env es None
Introducción a Apache Airflow en Python

Acceder a variables en plantillas Jinja

  • Accesible con {{ var.value.variable_name }}
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ var.value.region }}/input.csv",
    ...
    
  • En nuestro caso, FileSensor buscaría el archivo /data/us-eastern/input.csv
Introducción a Apache Airflow en Python

Acceder a variables por CLI

  • Se pueden leer, actualizar, borrar o listar por línea de comandos
  • Leer - airflow variables get <variable_name>
  • Escribir - airflow variables set <variable_name> <value>
  • Borrar - airflow variables delete <variable_name>
  • Listar - airflow variables list <variable_name>
Introducción a Apache Airflow en Python

Variables JSON

  • Los valores pueden ser cadenas JSON
    • Variable.get("variable_name", deserialize_json=True)
    • Devuelve un diccionario de Python
  • Usando Jinja
    • {{ var.json.variable_name }}
Introducción a Apache Airflow en Python

Definir variables

  • También se pueden definir variables
  • Con Variable.set("variable_name", variable_value)
  • También JSON con serialize_json=True
  • Úsalas con moderación: puede afectar a otros Dags de forma imprevista
Introducción a Apache Airflow en Python

¡Vamos a practicar!

Introducción a Apache Airflow en Python

Preparing Video For Download...