Airflow Jinja模板调用xcom_pull返回列表而非字符串该如何处理?
问题原因
你传入的task_ids参数是列表类型['task1'],Airflow的xcom_pull方法约定:当task_ids传入列表时,会返回对应所有任务的XCom结果组成的列表,所以你拿到了单元素列表['this is just a string']。
你之前在PythonOperator里直接传入字符串类型的task_ids='task1',属于拉取单个任务的XCom,因此直接返回对应字符串值。
解决方案
两种修改方式均可实现直接获取目标字符串:
- 方式1:把
task_ids参数从列表改为单个字符串(最推荐,符合Airflow方法设计规范)
"{{ ti.xcom_pull(task_ids='task1', key='return_value') }}"
- 方式2:如果确实需要保留
task_ids的列表写法,直接在模板末尾加下标取第一个元素
"{{ ti.xcom_pull(task_ids=['task1'], key='return_value')[0] }}"
内容的提问来源于stack exchange,提问作者Kyle N
相关产品推荐
相关产品推荐

