Доступ к переменной '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