Search code examples
pythonairflowjinja2

Passing param to Airflow DAG from another DAG with TriggerDagRunOperator


I'm trying to pass a param to Airflow DAG from another DAG with TriggerDagRunOperator, here is the code:

@dag(default_args=default_args, catchup=False, #schedule_interval=DAG_SCHEDULE_INTERVAL,
     dagrun_timeout=timedelta(seconds=3600), tags=["tag1"], doc_md=DOC_MD, max_active_runs=1)
def parent_dag(date_start="", date_end=""):

    triggered_dag = TriggerDagRunOperator(
          task_id='triggered_dag',
          trigger_dag_id='triggered_dag',
          conf={"date_start": "{{date_start}}", "date_end": "{{date_start}}"}
    )
     
    triggered_dag 

dag = parent_dag()

The params date_start and date_end in parent DAG have a empty string default value, but they will normally be manually informed when triggering parent DAG.

With above code sample I'm getting this error:

jinja2.exceptions.UndefinedError: 'date_start' is undefined

Does anyone know where's the issue?

Thanks in advence.


Solution

  • I finally found it. You can access the parameters this way:

    @dag(default_args=default_args, catchup=False, #schedule_interval=DAG_SCHEDULE_INTERVAL,
             dagrun_timeout=timedelta(seconds=3600), tags=["tag1"], doc_md=DOC_MD, max_active_runs=1)
        def parent_dag(date_start="", date_end=""):
        
            triggered_dag = TriggerDagRunOperator(
                  task_id='triggered_dag',
                  trigger_dag_id='triggered_dag',
                  conf={"date_start": "{{params.date_start}}", "date_end": "{{params.date_start}}"}
            )
             
            triggered_dag 
    
    dag = parent_dag()
    

    Take a look in documentation