Plantillas con Jinja

Introducción a Apache Airflow en Python

Mike Metzger

Data Engineer

¿Qué es una plantilla?

  • Formato definido que permite a Airflow sustituir info automáticamente
  • A menudo texto plano / archivos de texto
  • Facilita acceso y reutilización

 

Ilustración de una plantilla con marcadores para valores sustituidos

Introducción a Apache Airflow en Python

¿Qué es Jinja?

  • Lenguaje de plantillas simple basado en texto
  • Usado en muchas herramientas más allá de Airflow
  • {{ ... }} representa una sustitución de plantilla
    • Similar a un f-string de Python
  • Uso más dinámico, admite bucles

Ilustración de una plantilla Jinja con sustituciones con llaves dobles

Introducción a Apache Airflow en Python

Funciones Jinja de Airflow

  • logical_date: cuándo ocurre una ejecución del DAG
  • ds: logical_date en formato YYYY-MM-DD
  • logical_date.year, logical_date.month, logical_date.day: acceder a componentes de fecha
  • params: parámetros en tiempo de ejecución del DAG
  • Cálculos, bucles y más
    • macros.ds_add: permite cálculos de fechas
Introducción a Apache Airflow en Python

Ejemplo con SmtpNotifier

  • Sustituciones en el asunto
@dag(dag_id=`sales_etl`,
     on_failure_callback=SmtpNotifier(
         to='[email protected]',
         from_email='[email protected]',

subject='sales_etl on {{ logical_date }} has failed!' ) )
  • Asunto: sales_etl on 2026-04-30 failed!
Introducción a Apache Airflow en Python

Ejemplo con FileSensor

  • Configura la ruta de archivo dinámicamente
  • Busca archivos el día anterior a ds (logical_date en YYYY-MM-DD )
  • Usa macros.ds_add
    filewatcher = FileSensor(
    task_id="wait_for_files",
    filepath="/data/{{ macros.ds_add(ds, -1) }}/input.csv",
    ...
    )
    
  • Si ds es 2026-04-30, la ruta sería /data/2026-04-29/input.csv
Introducción a Apache Airflow en Python

Notas sobre Jinja

  • No se puede usar en todas partes
  • Revisa la documentación de atributos templated
  • Mira la vista de código

Vista de código del DAG de Airflow que muestra el código fuente de solo lectura que define el DAG

Introducción a Apache Airflow en Python

¡Vamos a practicar!

Introducción a Apache Airflow en Python

Preparing Video For Download...