Доступ к переменной 'ds' в потоке воздуха

Я могу получить доступ к макросам в коде Python, как показано ниже:

partition_dt = macros.ds_add(ds, 1)

Но я не могу понять, как получить ds Сама переменная, которая, казалось бы, может быть доступна только в шаблонах. Есть указатели?

2 ответа

Решение

Я предполагаю, что вы хотите вызвать одну из переменных по умолчанию, встроенную в AirFlow ds - дату выполнения в формате YYYY-MM-DD

Для вызова просто DS, вы можете сделать:

EXEC_DATE = '{{ ds }}'

Чтобы назвать то, что вы хотели - macros.ds_add:

EXEC_DATE = '{{ macros.ds_add(ds, 1) }}'

И загрузите это так:

T1 = BashOperator(\
        task_id='test_ds',
        bash_command='echo ' + EXEC_DATE
        dag=DAG)

Если вы хотите отформатировать его (как я должен был), вы можете сделать:

EXEC_DATE = '{{ macros.ds_format(macros.ds_add(ds, 1), "%Y-%m-%d", "%Y%m%d") }}'

Короткий ответ, переменные ds и macro могут быть доступны только через шаблон, поскольку они существуют только во время выполнения, а не во время анализа кода Python (когда dag загружается потоком воздуха).

Вопрос действительно похож на этот: execute_date в airflow: необходимо получить доступ как переменную, и я пытаюсь объяснить разницу между двумя шагами и как указать дату выполнения в переменной в последнем ответе: /questions/7865904/vyipolneniedatyi-v-potoke-vozduha-neobhodimo-poluchit-dostup-v-kachestve-peremennoj/7865924#7865924

Другие вопросы по тегам