我正在尝试找出气流中是否有一种有用的方法来将执行日期通过dag传递给GKEPodOperator参数。
这是我的代码:
with DAG(
DAG_NAME,
default_args=default_args,
) as dag:
end_date = '{{ ds }}'
start_date = '{{ (ds - macros.timedelta(days=1)).strftime("%Y-%m-%d") }}'
playlog_to_gcs = GKEPodOperator(
task_id=f"test",
project_id=PROJECT,
location=LOCATION,
cluster_name=CLUSTER_NAME,
namespace="default",
image=f"gcr.io/{PROJECT}/test",
name=f"{DAG_NAME}",
get_logs=True,
# I would like to be able to use macros with strings to pass to parameters in operators such as this
env_vars={
"TARGET_PATH": f"test/test-{end_date}.csv",
},
)
但是,TARGET_PATH最终导致 测试/测试-{{ds}}。csv
答案 0 :(得分:0)
Jinja2在所有模板化字段中评估模板,这些字段在操作符类中进行了描述。就您而言,它发生在这里: https://github.com/apache/airflow/blob/2bdb053db618de7064b527e6e3ebe29f220d857b/airflow/contrib/operators/gcp_container_operator.py#L228
env_vars确实是模板字段,因此它应该可以工作。 我认为您应该尝试:“ test / test-{{end_date}}。csv”