Воздушный поток PostgresOperator только находит файл SQL в той же папке, что и DAG - PullRequest
0 голосов
/ 10 января 2020

Я могу запустить файл SQL, только если я помещу его в ту же папку, что и группа обеспечения доступности баз данных:

create_tables = PostgresOperator(
task_id="create_tables",
dag=dag,
postgres_conn_id="redshift",
sql="create_tables.sql"
)

Если create_tables. sql находится в другой папке (родительская папка). , папка одноуровневая) PostgresOperator выбрасывает jinja2.exceptions.TemplateNotFound, я пробовал абсолютный путь, относительные пути (../create_tables.sql), но не повезло.

Как понять механизм загрузки файлов этого оператора?

1 Ответ

1 голос
/ 10 января 2020

При определении dag вы должны добавить в качестве аргумента template_searchpath, который является абсолютным путем к папке. Тогда вам просто нужно назвать имя файла. Пример:

with DAG('retraining_sagemaker',
         default_args=default_args,
         schedule_interval = timedelta(days=21),
         template_searchpath = ['/home/ubuntu/airflow_ci/current/scripts/antifraud']
         ) as dag:


    start = DummyOperator(
            task_id = 'start')

    generate_train_and_test_tables = PostgresOperator(
        task_id = 'generate_train_and_test_tables',
        sql = ['generate_train_and_test_tables.sql'],
        postgres_conn_id = 'redshift',
        autocommit = True)
...