Доступ к значению оператора воздушного потока вне оператора

Вне оператора мне нужно вызвать SubdagOperator и передать ему возвращаемое значение оператора, используя xcom. Я видел множество решений ( Airflow - как передать переменную xcom в функцию Python, как получить значение из Airflow XCom, отправленное через SSHExecuteOperator и т. Д.).

Все они в основном говорят "имя_переменной": "{{ ti.xcom_pull(task_ids='some_task_id') }}"

Но мой шаблон Jinja продолжает отображаться в виде строки, а не возвращать фактическую переменную. Есть идеи почему?

Вот мой текущий код в главном dag:

PARENT_DAG_NAME = 'my_main_dag'
CHILD_DAG_NAME = 'run_featurization_dag'

run_featurization_task = SubDagOperator(
    task_id=CHILD_DAG_NAME,
    subdag=run_featurization_sub_dag(PARENT_DAG_NAME, CHILD_DAG_NAME, default_args, cur_date, "'{{ ti.xcom_pull(task_ids='get_num_accounts', dag_id='" + PARENT_DAG_NAME + "') }}'" ),  
    default_args=default_args,
    dag=main_dag
)

1 ответ

Слишком много цитат? Попробуй это

"{{ ti.xcom_pull(task_ids='get_num_accounts', dag_id='" + PARENT_DAG_NAME + "') }}"

Jinja Templating работает только для определенных параметров, а не для всех.

You can use Jinja templating with every parameter that is marked as “templated” in the documentation. Template substitution occurs just before the pre_execute function of your operator is called.

https://airflow.apache.org/concepts.html

Поэтому я боюсь, что вы не можете передать переменную таким образом.

Другие вопросы по тегам