Size: a a a

2018 May 08

ДС

Дина Сафина in Airflow
Передавайте в словаре в параметре templates_dict:
    ...
   provide_context=True,
   templates_dict={'sql': some_sql},
   ...
источник

ДС

Дина Сафина in Airflow
Получать внутри PythonOperator'а как kwargs['templates_dict']['sql']
источник

A

Alexander in Airflow
спасибо, попробую
источник

A

Alexander in Airflow
Дина Сафина
Передавайте в словаре в параметре templates_dict:
    ...
   provide_context=True,
   templates_dict={'sql': some_sql},
   ...
Спасибо, так всё работает :)
источник

ДС

Дина Сафина in Airflow
👍
источник

A

Alexander in Airflow
Ещё один вопрос. Я с помощью цикла for создаю много тасков (см. картинку) каждый таск должен отдать свой результат через xcom следующему за ним соостветствующему таску (второму в этой цепочке). В этом втором таске xcom реализован внутри метода execute в операторе. Видимо я неправильно задаю параметр task_ids, так как метод compare_query = context['task_instance'].xcom_pull(key='return_value', task_ids='prepare_compare_query')  возвращает NoneType. Подскажите, как правильно задавать task_ids в такой ситуации?
источник

A

Alexander in Airflow
источник

OI

Oleg Ilinsky in Airflow
а что возвращает предыдущий таск? Ну т.е. там задается key='return_value'?
источник

A

Alexander in Airflow
да, предыдущий такс точно возвращает значения
источник

A

Alexander in Airflow
источник

OI

Oleg Ilinsky in Airflow
мб в названии тасков ошибка?
источник

A

Alexander in Airflow
насколько я понимаю, в параметре task_ids нужно писать имя конкретного таска, а у меня их много и их имена создаются циклом.
источник

OI

Oleg Ilinsky in Airflow
насколько я понимаю, в параметре task_ids нужно писать имя конкретного таска
источник

OI

Oleg Ilinsky in Airflow
да, именно так
источник

OI

Oleg Ilinsky in Airflow
тогда нужно в параметрах передавать название предыдущего, например, ну или кусок _for_1_billinkg_id
источник

OI

Oleg Ilinsky in Airflow
в kwargs
источник

OI

Oleg Ilinsky in Airflow
если там вообще только числа отличаются, то можно только их
источник

A

Alexander in Airflow
ага, то есть прямо в метод execute оператора? так?
источник

OI

Oleg Ilinsky in Airflow
get_actual_table_name = PythonOperator(
   task_id='get_actual_{zone}_table_name'.format(zone=zone),
   python_callable=get_actual_table_version,
   op_kwargs={'conn_id': 'conn_sf_{zone}_pg_gmtool'.format(zone=zone),
       'table_name_pattern': schema_name_no_quotes,
       'zone': zone,
       'table_name_arr': ['Table1', 'Table2', 'Table3']},
   provide_context=True,
   adhoc=True,
   dag=dag
)


вот как тут в op_kwargs
источник

A

Alexander in Airflow
ага, спасибо, попробую
источник