airflow - Airflow:如何使用宏获取上个月的第一天?
问题描述
我正在尝试回填一份需要将日期调整到上个月第一天的工作。
我可以使用:
from datetime import datetime, timedelta, date
date = (date.today().replace(day=1) - timedelta(days=1)).replace(day=1)
但我不确定 Airflow 中的回填是否会返回 date.today() 作为运行日期。
解决方案
我得到了这个,它仍然会吐出一个时间戳,如果你需要的话,需要添加一些字符串格式来获得一个日期
dag = DAG('test',default_args=default_args, schedule_interval='@daily')
def test_print(input):
print('Testing')
print(input)
test_print = PythonOperator(
task_id='test_print',
python_callable=test_print,
op_args=['{{ execution_date + macros.dateutil.relativedelta.relativedelta(months=-1, day=1) }}'],
dag=dag
)
注意相对和绝对参数的混合relativedelta
年、月、日、时、分、秒、微秒:绝对信息(参数为单数);使用绝对信息添加或减去 relativedelta 不会执行算术运算,而是将原始日期时间中的相应值替换为 relativedelta 中的值。
推荐阅读
- ruby-on-rails - 如何为我的 Rails 应用程序扩展 sidekiq 性能。需要每秒运行 100 个 sidekiq 作业
- python - Docker start 不在控制台上提供打印输出
- wpf - 如何使用 UI 扩展现有控件
- react-native - React-native 导航:this.props.navigation.navigate 返回 undefined is not an object
- r - R:将字符串粘贴为 dplyr 中的代码或函数参数
- javascript - Nodejs Firebase 事务 - 如果条件失败,则更新节点并发送错误
- java - 我如何测试这个异常抛出方法?
- c# - Visual Studio Code C# 调试问题(终端进程无法启动:shell 可执行文件“dotnet”的路径不是符号链接的文件。)
- reactjs - TypeError:无法解构“未定义”的属性“名称”,因为它未定义
- java - 我无法通过用户输入到 TextView 从 Firebase 数据库中检索数据