在气流中访问'ds'变量

问题描述 投票:2回答:2

我能够在python代码中访问宏,如下所示:

partition_dt = macros.ds_add(ds, 1)

但我无法弄清楚如何获取ds变量本身,它似乎只能在模板中访问。有什么指针吗?

airflow
2个回答
18
投票

我假设您要调用其中一个内置AirFlow ds的默认变量 - 执行日期为YYYY-MM-DD

要只调用ds,您可以执行以下操作:

EXEC_DATE = '{{ ds }}'

打电话给你想要的东西 - macros.ds_add:

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

并以这种方式加载它:

T1 = BashOperator(\
        task_id='test_ds',
        bash_command='echo ' + EXEC_DATE
        dag=DAG)

如果你想格式化它(就像我必须),你可以这样做:

EXEC_DATE = '{{ macros.ds_format(macros.ds_add(ds, 1), "%Y-%m-%d", "%Y%m%d") }}'

1
投票

简而言之,ds和宏变量只能通过模板访问,因为它们仅在执行期间存在,而不是在python代码解析期间(当气流加载dag时)。

问题与这个问题非常相似:execution_date in airflow: need to access as a variable和我试着解释两个步骤之间的区别以及如何在最后一个答案中将变量中的执行日期:https://stackoverflow.com/a/45725005/3756307

© www.soinside.com 2019 - 2024. All rights reserved.