Airflow 如何使用BashOperator任务的结果作为另一个任务的参数?

Airflow 如何使用BashOperator任务的结果作为另一个任务的参数?,airflow,databricks,Airflow,Databricks,我需要将一个作业id参数传递给我的对象databricksrunowoperator()。job_id是执行databricks jobs create--json'{myjson}命令的结果 $databricks作业创建--json'{myjson}' {job_id:12} 我写这段代码是为了解释我的目标,但它不起作用。如何将BashOperator任务的结果用于依赖它的其他任务?BashOperator中的bash命令需要是$databricks jobs create--json'{m

我需要将一个作业id参数传递给我的对象databricksrunowoperator()job_id是执行
databricks jobs create--json'{myjson}
命令的结果

$databricks作业创建--json'{myjson}'

{job_id:12}


我写这段代码是为了解释我的目标,但它不起作用。如何将BashOperator任务的结果用于依赖它的其他任务?

BashOperator中的bash命令需要是
$databricks jobs create--json'{myjson}

i、 e

CreateRobot=bash操作符(dag=dag\u CreateRobot,
任务\u id='CreateRobot',
bash_command=“databricks jobs create--json'{myjson}')”,
xcom_push=True#在旧版本中指定此选项)

执行上述运算符时,将输出的最后一行推送到xcom。()


可以使用
ti.xcom\u pull(task\u ids='CreateRobot')
访问
xcom
值。您好,您需要使用xcom(交叉通信)在任务之间传输数据。检查此链接:@A.Villegas是的,我试图使用它,但失败了。你能将我的代码改编成works解决方案吗?我得到了这个错误:“气流名称'ti'未定义”拉动功能需要以这种方式-
def pull_函数(**kwargs):ti=kwargs['ti']ret=ti.xcom_pull(task_id='CreateRobot')print(f'ret:{ret}')
import os
import subprocess    
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.contrib.operators.databricks_operator import DatabricksRunNowOperator

def pull_function():
    returned_output = subprocess.check_output("echo ti.xcom_pull(key='jobid_CreateCreateRobot')")
    return returned_output


dag_CreateRobot = DAG(dag_id='CreateRobot', 
                      default_args={'owner': 'eric', 
                                  'email': [],
                                  'depends_on_past': False, 
                                  'start_date':'2019-09-16 16:48:28.803023', 
                                  'provide_context': True}, 
                      schedule_interval='@once')

CreateRobot = BashOperator(dag=dag_CreateRobot, 
                                 task_id='CreateRobot', 
                                 bash_command="databricks jobs create --json '{myjson}')")\

RunRobot = DatabricksRunNowOperator(dag=dag_CreateRobot, 
                                    task_id=ti.xcom_pull('RunCreateRobot'), 
                                    job_id=pull_function(), 
                                    databricks_conn_id='myconn', 
                                    json={'token': 'mytoken' })

RunRobot.set_upstream(CreateRobot)