将 2 个 Airflow 宏链接在一起

Chaining together 2 Airflow macros

目前有 two Airflow macros 可用:ds_addds_format

我想知道同时使用它们的语法。

例如,我目前可以像这样使用其中之一将日期加 7 天:

dt7 = '{{ macros.ds_add(ds, 7) }}'

然而,我实际上需要做这样的事情并在不使用 datetime 或任何其他 python 包的情况下取回 YYYYMMDD 格式,因为我需要将其提供给操作员:

dt7_fixed = '{{ macros.ds_add(ds_nodash, 7) }}'

但是ds_add不支持'YYYYMMDD'格式,只支持'YYYY-MM-DD'.

一种解决方法是在该单行中 use ds_format,但我无法理解正确的语法。

我相信这会如你所愿:

{{ macros.ds_format(macros.ds_add(ds, 7), '%Y-%m-%d', '%Y%m%d') }}

您应该像看待函数一样看待这些宏。 根据您在上面包含的 link ds_format 接受 3 个参数,日期字符串和两个表示所需输入和输出格式的字符串。

最初使用的 ds_add 宏的输出是一个字符串,您可以将其用作此处的第一个参数。

在源代码中请注意,这在幕后使用了 datetime