Python 访问修改后的气流变量作为气流中S3传感器的自定义参数

Python 访问修改后的气流变量作为气流中S3传感器的自定义参数,python,airflow,Python,Airflow,看看我能不能解释一下这件事 看,我从客户那里收到的S3文件格式不好。例如,日期以低破折号显示,如“2017年7月10日” 因为我想访问它们以便能够下载它们,所以首先我有一个任务,那就是气流中的S3传感器。看起来是这样的: xxx = S3KeySensor( task_id='task_name', bucket_key=BUCKET_KEY, wildcard_match=True, params={'yesterday_ds_formatted': ????}

看看我能不能解释一下这件事

看,我从客户那里收到的S3文件格式不好。例如,日期以低破折号显示,如“2017年7月10日”

因为我想访问它们以便能够下载它们,所以首先我有一个任务,那就是气流中的S3传感器。看起来是这样的:

xxx = S3KeySensor(
    task_id='task_name',
    bucket_key=BUCKET_KEY,
    wildcard_match=True,
    params={'yesterday_ds_formatted': ????},
    provide_context=True,
    bucket_name=BUCKET_NAME,
    s3_conn_id=S3_CONN_ID,
    timeout=18 * 60 * 60,
    poke_interval=120,
    dag=dag)
在Airflow控制台的Variables部分中,我有一个bucket_键和模板变量{{Dayed_ds_formatted}

e、 g.:'folder1/folder2/folder3/blablabla-{{params.dayed\u ds_formatted}}.*.csv

我需要修改模板变量或其他东西,以便它获取{{昨天{uds}},并用“{uds}”替换“-”

伙计们,我该怎么做?我无法使它工作。。。 我在设置参数时尝试调用自定义python函数,但是我无法访问“ds”,即使使用kwargs也不行。可以说,我似乎无法事先访问模板变量


谢谢

如果我理解正确,您希望对
bucket\u key
参数使用jinja模板,但S3KeySensor不支持

这样做的一个简单方法是从
S3KeySensor
中对自定义传感器进行子分类,如下所示:

TemplatedS3KeySensor(S3KeySensor):
  template_fields = ('bucket_key',)