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

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

Все они обычно говорят «имя_переменной»: «{{ti.xcom_pull (task_ids = ‘some_task_id’)}}»

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

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

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
)

См. также:  Ожидается, что JsonSerializer.Deserialize вызовет исключение при десериализации другого класса
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Yusuf Khaled

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

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

    Шаблоны 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

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

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: