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

如何通过代码向「Job as Task」类型的嵌套工作流传递参数?

解决Databricks Job as Task跨工作流参数传递问题

问题根源

你推测的完全正确:嵌套工作流(Task_B引用的独立Job)和父工作流属于完全独立的运行上下文,dbutils.jobs.taskValues仅能在同一个Job运行实例内的任务间共享数据,跨Job无法直接访问对方的任务上下文。

具体解决方案

1. 父工作流配置Task_B的参数传递

在父工作流的Task_B(Run Job类型)设置界面,找到「Parameters」区域:

  • 添加参数entity_ids,值填写{{tasks.Task_A.outputs.entity_ids}}(注意key要和Task_A中taskValues.set的key完全一致,比如你之前代码里的entity_id要统一改成entity_ids避免拼写错误)。
  • 配置完成后,父工作流会自动将Task_A输出的参数值,作为运行嵌套工作流的输入参数传递过去。

2. 嵌套工作流读取参数

在嵌套工作流的Notebook中,改用dbutils.widgets接收参数,不要用taskValues.get:

# 定义参数,默认值为空列表
dbutils.widgets.text("entity_ids", "[]")
# 获取参数并转换为列表格式
entity_ids = eval(dbutils.widgets.get("entity_ids"))

3. 实现Task_A的条件触发逻辑

如果需要Task_A判断是否执行Task_B:

  • 在Task_A中添加输出值:检测到特定信息时执行dbutils.jobs.taskValues.set("should_run", "true"),否则设为"false"。
  • 回到父工作流的Task_B设置,在「Task dependencies」里选择「Run this task only if」,再选「A task has succeeded and a condition is met」,输入条件{{tasks.Task_A.outputs.should_run}} == "true"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 10:56:26