气流是否有类似“yesterday_ds”/“tomorrow_ds”的东西,但对于“@monthly”工作?

Con*_*ean 1 airflow airflow-scheduler

我有一项工作使用该ds变量来协调它处理的工作量,并且计划每天使用@daily.

select * from events
where date = '{{ ds }}';
Run Code Online (Sandbox Code Playgroud)

但是,我想编写一个新版本的@monthly. 我不需要做太多改变,但我需要访问下一次运行的日期戳以便干净地移植它。

select * from events
where
date >= '{{ ds }}'
and
date < '{{ macros.ds_add(ds, 32) }}';
Run Code Online (Sandbox Code Playgroud)

我可以通过制作 DAGrun 的结束日期来解决问题,{{ ds_add(ds, 32) }}因为我的工作能够处理运行之间的重叠,但我希望有一种方法可以让日期戳成为下个月的第一天或第一天上个月。

select * from events
where
date >= '{{ ds }}'
and
date < '{{ next_month }}';
Run Code Online (Sandbox Code Playgroud)

我怎么能实现这个?

Sim*_*onD 6

如果您运行的是最新版本的 Airflow 并且您将日程安排的时间间隔设置为 @monthly,那么我认为{{ prev_execution_date }}{{ next_execution_date }}正是您要寻找的。你可以在这里看到所有的宏