Воздушный поток PostgresOperator set ON_ERROR_STOP - PullRequest
0 голосов
/ 18 мая 2018

Я создаю задачу, используя PostgresOperator, и я хотел бы установить ON_ERROR_STOP = 1, есть ли способ передать это в параметре PostgresOperator или я должен поместить это непосредственно в мой файл «query.sql»?

my_operator = PostgresOperator(
    task_id='my_operator',
    dag=dag,
    postgres_conn_id='my_server',
    sql="sql/query.sql")

Например, в bash я могу сделать:

psql -v "ON_ERROR_STOP=1"

Или есть простой способ добавить

\set ON_ERROR_STOP on

\unset ON_ERROR_STOP

вокруг моего запроса без редактирования query.sqlфайл?

Спасибо!

1 Ответ

0 голосов
/ 18 мая 2018

Я не слишком знаком с postgres, но если вы можете отправить \set ON_ERROR_STOP и \unset ON_ERROR_STOP на postgres точно так же, как отправляете любое другое заявление sql, вы всегда можете сделать это:

my_operator = PostgresOperator(
    task_id='my_operator',
    dag=dag,
    postgres_conn_id='my_server',
    sql=["\set ON_ERROR_STOP on","sql/query.sql", "\unset ON_ERROR_STOP"])

С помощью dbapi_hook (который использует postgres_hook) вы можете отправлять несколько операторов SQL в виде списка, и все они выполняются в одном сеансе в том же порядке, в котором вы их указали в списке.

...