我想使用datetime参数运行每天运行的任务。例如python flow 20190801
,因此日期是一个动态参数。
我在jinja
模板中尝试过,但是似乎不起作用(无法读取{{ DATE }}
参数)。
那里有什么问题?还是有更好的解决方案来实现相同的目的?
这是代码段。
compress_task = SSHOperator(
task_id='test_task',
ssh_conn_id='exporter_ssh',
depends_on_past=True,
command='python flows.py compress -d {{ DATE }} ',
params={"DATE": str(datetime.today().date()).replace('-', '')},
dag=dag
)
我知道解决方案之一是使用$(date '+%Y%m%d')
,但是它始终是当前执行日期,而不是任务计划日期。
答案 0 :(得分:2)
我只是知道它可以实现with macros。
compress_task = SSHOperator(
task_id='test_task',
ssh_conn_id='exporter_ssh',
depends_on_past=True,
command='python flows.py compress -d {{ ds_nodash }}',
dag=dag
)
答案 1 :(得分:1)
如果您要使用dt['col2'] = dt.col.str.split('_', expand = True).fillna('all')[1]
字典中指定的参数进行Jinja模板化,则需要先引用params
,即params
来访问它们。因此,根据您的情况,应该是
{{ params.DATE }}
但是,在涉及与任务/数据执行相关的时间戳和日期时,最好使用built-in macros,如您已经指出的那样。