Airflow - 如何在传感器中使用宏

Airflow - How to use macros in a sensor

我正在尝试在字段 "object" 上的 GCS 传感器中使用宏,它是根据 documentation 模板化的,但它不起作用。 UI 显示具有宏作为值的 "object"。

dag = DAG('dag-name',
        schedule_interval="@once",
        default_args=default_args)

date = "{{ ds }}"

gcs_sensor = GoogleCloudStorageObjectSensor(
    task_id='sensor-task-id'
    ,bucket='bucket-name'
    ,object='file-name-prefix' + date + '.gz'
    ,google_cloud_conn_id='google-cloud-storage-default'
    ,dag=dag)

dataflow_job_operator = KubernetesJobOperator(
    task_id='task-id'
    ,image='image/path:latest'
    ,command=exec_args
    ,environment=env_variables
    ,dag=dag)

dataflow_job_operator.set_upstream(gcs_sensor)

Object filed result screenshot from airflow UI

我也尝试使用 XCom 使用 pythonOperator 推送日期,但没有成功。

是否可以通过这种方式使用宏,或者我应该尝试其他方法吗? 谢谢

我相信您的屏幕截图属于 "Task Instance Details" 选项卡,在这种情况下,实际会看到 file-name-prefix{{ ds }}.gz 的预渲染值。

如果您想查看呈现的模板参数,则需要查看任务下的 "Rendered Template" 选项卡。