将 2 个 Airflow 宏链接在一起
Chaining together 2 Airflow macros
目前有 two Airflow macros 可用:ds_add
和 ds_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
。
目前有 two Airflow macros 可用:ds_add
和 ds_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
。