You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow如何仅删除当前DAG Run对应的XCOM键值对?

问题核心原因

你的删除语句仅按dag_id过滤,会删除对应DAG下所有运行实例生成的XCOM数据,与其他并行运行的DAG Run产生资源冲突。

解决方案

直接修改PostgresOperator的SQL语句,通过Airflow内置的Jinja模板变量注入当前DAG Run的唯一标识,仅删除当前实例生成的XCOM:

修改后代码示例

delete_xcom_task = PostgresOperator(
      task_id='delete-xcom-task',
      postgres_conn_id='postgres',
      sql="delete from public.xcom where dag_id='替换为你的实际dag_id' AND run_id = '{{ run_id }}'",
      dag=curation)
相关说明
  • Airflow官方PostgresOperator的sql参数默认支持Jinja模板渲染,{{ run_id }}会在任务执行时自动替换为当前DAG Run的唯一ID,确保只删除本次运行生成的XCOM
  • 如果你使用的是Airflow 1.x版本,xcom表没有run_id字段,可以改用execution_date作为过滤条件,SQL写法如下:
delete from public.xcom where dag_id='替换为你的实际dag_id' AND execution_date = '{{ execution_date.isoformat() }}'
  • 上线前建议先将delete改为select *验证过滤结果,确认只返回当前DAG Run的XCOM数据后再执行删除操作,避免误删数据。

内容的提问来源于stack exchange,提问作者bigdataadd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:18:03