如何在 Airflow 中格式化宏?

Pro*_*120 5 airflow

我有以下内容:

EXEC_DATE1 = '{{ macros.ds_add(ds, 1) }}'


EXEC_DATE2 = '{{ execution_date }}'
Run Code Online (Sandbox Code Playgroud)

我想创建如下所示的路径变量:

path1 = EXEC_DATE1 + '/' + HH:MM (of EXEC_DATE1)
path2 = EXEC_DATE2 + '/' + HH:MM (of EXEC_DATE2)
Run Code Online (Sandbox Code Playgroud)

最终它应该是这样的:

2018-09-16/10:41
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我试过:

EXEC_DATE = '{{ execution_date }}'
EXEC_DATE = EXEC_DATE.strftime('%Y-%m-%d/%H:%M')
Run Code Online (Sandbox Code Playgroud)

但它给出了:

'str' object has no attribute 'strftime'
Run Code Online (Sandbox Code Playgroud)

编辑: 我的代码:

EXEC_TIMESTAMP_PATH = "{{  execution_date.strftime('%Y-%m-%d/%H:%M') }}"
EXEC_DATE = "{{  execution_date.strftime('%H:%M') }}"
EXEC_TIME = "{{  mexecution_date.strftime('%Y-%m-%d') }}"

task3_op= BashOperator(
    task_id='task3',
    params={'EXEC_DATE':EXEC_DATE, 'EXEC_TIME':EXEC_TIME},
    bash_command="""python3 script.py '{{ var.value.task3_variable }}' '{{ params.EXEC_DATE }}' '{{ params.EXEC_TIME }}' 'file.json'""",
    dag=dag)
Run Code Online (Sandbox Code Playgroud)

这是行不通的。参数不会被渲染。

kax*_*xil 5

您需要按如下方式进行:

EXEC_DATE = "{{ execution_date.strftime('%Y-%m-%d/%H:%M') }}"
Run Code Online (Sandbox Code Playgroud)

应该strftime用在花括号内。

如果您需要 next_execution 日期,请使用以下命令:

EXEC_DATE = "{{ next_execution_date.strftime('%Y-%m-%d/%H:%M') }}"
Run Code Online (Sandbox Code Playgroud)

如果您只想添加timedelta

EXEC_DATE = "{{ (execution_date + macros.timedelta(days=1)).strftime('%Y-%m-%d/%H:%M') }}"
Run Code Online (Sandbox Code Playgroud)

您的代码可以如下所示:

EXEC_DATE = "{{ execution_date.strftime('%Y-%m-%d/%H:%M') }}"
Run Code Online (Sandbox Code Playgroud)