Доступ к значению оператора воздушного потока вне оператора - PullRequest
0 голосов
/ 17 октября 2018

За пределами оператора мне нужно вызвать 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
)

Ответы [ 2 ]

0 голосов
/ 26 января 2019

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

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#jinja-templating

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

0 голосов
/ 18 октября 2018

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

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