宏功能中的气流覆盖“ ds”

时间:2018-09-24 19:55:08

标签: python-3.x jinja2 airflow

我正在尝试将动态日期值传递给宏函数ds_format。

DEFAULT_DATE= '{{ ds }}'
__init__(self, exec_date=DEFAULT_DATE): self.exec_date = exec_date

现在,我在

之类的函数中有一些宏
{{macros.ds_format(ds, "%Y-%m-%d", "%Y%m%d")}} 

但是,我想像这样将exec_date传递给宏

"""{{ macros.ds_format(""" + self.exec_date + """, "%Y-%m-%d", "%d%m%Y") }}""" 

这是将值传递给Airflow(jinja2)中的微型计算机的正确方法吗?要么。有没有其他方法可以传递动态值(exec_date)?。

2 个答案:

答案 0 :(得分:1)

您只需要通过以下步骤:

"""{{ macros.ds_format(ds, "%Y-%m-%d", "%d%m%Y") }}""" 

一个例子是https://stackoverflow.com/a/52137676/5691525

已编辑

如果您只想使用有效日期,为什么不使用以下代码:

EXEC_DATE = "{{ execution_date.strftime('"%d%m%Y"') }}"

如果您只想使用变量,为什么还要使用jinja?只需使用普通的Python datetime就可以在这篇文章中看到:How do I turn a python datetime into a string, with readable format date?

答案 1 :(得分:0)

只使用{{ds_nodash}}难道不是很简单吗?

https://airflow.apache.org/code.html#macros