Есть ли в airflow что-то вроде `вчера_дней` / ` завтра_дней`, но для заданий `@month`?
У меня есть работа, которая использует ds
переменная для координации объема работы, которую она обрабатывает, и она запланирована на ежедневный запуск с @daily
,
select * from events
where date = '{{ ds }}';
Тем не менее, я хотел бы написать новую версию этого, чтобы @monthly
, Мне не нужно сильно менять, но мне нужен доступ к метке даты следующего запуска, чтобы аккуратно перенести ее.
select * from events
where
date >= '{{ ds }}'
and
date < '{{ macros.ds_add(ds, 32) }}';
Я могу как-то обойтись, сделав дату окончания DAGrun {{ ds_add(ds, 32) }}
потому что моя работа способна справляться с перекрытиями между прогонами, но я надеялся, что есть способ получить метку даты, которая будет первой в следующем месяце или первой в предыдущем месяце.
select * from events
where
date >= '{{ ds }}'
and
date < '{{ next_month }}';
Как я мог реализовать это?
2 ответа
Если вы используете последнюю версию Airflow и вы установили интервал своего расписания равным @monthly, то я думаю, что {{ prev_execution_date }}
а также {{ next_execution_date }}
это то, что вы ищете. Вы можете увидеть все макросы здесь
Ты можешь использовать {{ prev_execution_date }}
так же как {{ next_execution_date }}
Если вы работаете @monthyl
интервал графика.
В случае, если вы этого не делаете, вы можете разработать собственный макрос с помощью системы плагинов. Эти макросы позволят вам разработать функцию для передачи в шаблон, который точно соответствует вашим потребностям независимо от schedule_interval. Вы можете использовать существующие макросы ds_add() и ds_format() в качестве руководства.