Airflow 如何在气流中格式化宏?
我有以下资料:Airflow 如何在气流中格式化宏?,airflow,Airflow,我有以下资料: EXEC_DATE1 = '{{ macros.ds_add(ds, 1) }}' EXEC_DATE2 = '{{ execution_date }}' EXEC_DATE = "{{ next_execution_date.strftime('%Y-%m-%d/%H:%M') }}" 我想创建如下所示的路径变量: path1 = EXEC_DATE1 + '/' + HH:MM (of EXEC_DATE1) path2 = EXEC_DATE2 + '/' + HH
EXEC_DATE1 = '{{ macros.ds_add(ds, 1) }}'
EXEC_DATE2 = '{{ execution_date }}'
EXEC_DATE = "{{ next_execution_date.strftime('%Y-%m-%d/%H:%M') }}"
我想创建如下所示的路径变量:
path1 = EXEC_DATE1 + '/' + HH:MM (of EXEC_DATE1)
path2 = EXEC_DATE2 + '/' + HH:MM (of EXEC_DATE2)
最终应该是这样的:
2018-09-16/10:41
我该怎么做
我试过:
EXEC_DATE = '{{ execution_date }}'
EXEC_DATE = EXEC_DATE.strftime('%Y-%m-%d/%H:%M')
但它给出了:
'str' object has no attribute 'strftime'
编辑:
我的代码:
这不管用。不呈现参数。您需要按如下方式执行:
EXEC_DATE = "{{ execution_date.strftime('%Y-%m-%d/%H:%M') }}"
strftime
应在花括号内使用
如果需要下一个_执行日期,请使用以下命令:
EXEC_DATE1 = '{{ macros.ds_add(ds, 1) }}'
EXEC_DATE2 = '{{ execution_date }}'
EXEC_DATE = "{{ next_execution_date.strftime('%Y-%m-%d/%H:%M') }}"
如果您只想添加一个timedelta
:
EXEC_DATE = "{{ (execution_date + macros.timedelta(days=1)).strftime('%Y-%m-%d/%H:%M') }}"
您的代码可以如下所示:
EXEC_DATE = "{{ execution_date.strftime('%Y-%m-%d/%H:%M') }}"
BASH_命令=”“”
python3 script.py{{var.value.task3_variable}{{execution_date.strftime('%H:%M')}}{{execution_date.strftime('%Y-%M-%d')}}file.json
"""
task3_op=bash运算符(
任务id='task3',
bash\u命令=bash\u命令,
dag=dag)
具体地说,问题代码中不起作用的是,您的参数
没有在其上运行模板(宏扩展),但您的bash_命令
有。因此,我打赌bash_命令的渲染模板视图类似于,例如:
python3 script.py 'task3_variable's value' '{{ execution_date.strftime('%H:%M') }}' '{{ execution_date.strftime('%Y-%m-%d') }}' 'file.json'
这并没有得到进一步的扩展,“
也很可能对Bash失去了意义,因为实际上您有:
params = { 'EXEC_DATE': "{{ execution_date.strftime('%H:%M') }}",
'EXEC_TIME': "{{ execution_date.strftime('%Y-%m-%d') }}" }
因此,直接使用您在bash_命令的params
中设置的模板来删除一级宏扩展,对您来说效果更好
task3_op = BashOperator(
task_id='task3',
bash_command="""
python3 script.py '{{ var.value.task3_variable }}' \
'{{execution_date.strftime('%H:%M')}}' '{{execution_date.strftime('%Y-%m-%d')}}' file.json
""",
dag=dag)
调试此类问题时,应使用或检查UI任务实例详细信息中的呈现视图
它可能会告诉您假定的宏扩展出了什么问题。
此示例应呈现如下内容:
python3 script.py 'task3_variable's value' \
'12:21' '2018-09-16' file.json
您希望根据日期创建两条路径;尝试:
task3_op= BashOperator(
task_id='task3',
bash_command="""
python3 script.py \
'{{ var.value.task3_variable }}' \
'{{(execution_date + macros.timedelta(days=1).strftime('%Y-%m-%d/%H:%M')}}' \
'{{execution_date.strftime('%Y-%m-%d/%H:%M')}}' \
file.json
""",
dag=dag)
气流1.10还添加了next_execution_date
,这可能比在execution_date
中添加一天更好,如果您的间隔是每天的话。它不会为我的Bash操作符渲染