我有一个任务是从PostgresOperator实例化的,就像这样:
sql = "select * from {{ ti.xcom_pull(key='foo') }};"
task = PostgresOperator(sql=sql)
dag无法加载,提示“ jinja2.exceptions.UndefinedError:'ti'未定义。
当我用task_instance替换'ti'时,我得到相同的错误。任何帮助将不胜感激!
奇怪的是,如果我将ti.xcom_pull(...)
替换为ti
,它会毫无保留地呈现,并返回<TaskInstance: foo.bar 2019-04-25T14:27:06.822835+00:00 [None]>
答案 0 :(得分:1)
我用{{task_instance.xcom_pull(task_ids='taskidwherexcomisset', key='foo').encode('utf-8')}}
进行了测试,但是我确信{{ ti.xcom_pull(key='foo') }}
也可以使用。
尝试:
sql = 'select * from ' + "{{ti.xcom_pull(key='foo').encode('utf-8')}}" + ';',
仅显示示例行的示例行:
[2019-04-25 15:39:24,715] {base_task_runner.py:98} INFO - Subtask: [2019-04-25 15:39:24,714] {postgres_operator.py:52} INFO - Executing: select * from 2019/04/24/;