让我们看看我是否可以就此问题解释自己。
请参阅,我收到的客户格式错误的S3文件。例如,日期显示为低“破折号”,如“2017_07_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部分中,我有一个带有模板变量{{yesterday_ds_formatted}}的bucket_key。
e.g。 :'folder1 / folder2 / folder3 / blablablablabla - {{params.yesterday_ds_formatted}} *。csv
我需要修改该模板变量或某些东西,以便它抓取{{yesterday_ds}}并用“_”替换“ - ”。
我该怎么办?我无法让它发挥作用...... 我在设置参数时尝试调用自定义python函数,但后来我无法访问“ds”,甚至没有使用kwargs。似乎我无法事先访问模板变量。
谢谢!
答案 0 :(得分:0)
如果我理解这一点,你想使用jinja模板作为bucket_key
参数,但S3KeySensor不支持。
一种简单的方法是从S3KeySensor
继承自定义传感器,如下所示:
TemplatedS3KeySensor(S3KeySensor):
template_fields = ('bucket_key',)