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

如何在Databricks Job Workflow中用任务参数调度日期并指定Notebook运行

问题解答

一、通过任务参数指定运行特定Notebook

完全可以实现,推荐两种实用方式:

  • 方式1:控制Notebook动态调用
    先创建一个主控制Notebook,通过任务传入的参数(比如notebook_to_run)决定要执行的子Notebook。在控制Notebook里用dbutils.notebook.run()方法实现调用,示例代码:

    notebook_path = dbutils.widgets.get("notebook_to_run")
    dbutils.notebook.run(notebook_path, 3600)  # 3600为任务超时时间(单位:秒)
    

    之后创建Job时,给任务添加字符串参数notebook_to_run,值设为对应子Notebook的完整路径(比如/Workspace/Users/xxx/daily_notebook),再分别创建每日、每月的调度计划,对应传入不同参数值即可。

  • 方式2:CLI/Terraform参数化路径
    如果用代码定义Job(比如Databricks CLI或Terraform),可以直接通过变量动态指定Notebook路径。示例CLI配置JSON:

    {
      "name": "Dynamic Notebook Job",
      "tasks": [
        {
          "task_key": "run_target_notebook",
          "notebook_task": {
            "notebook_path": "{{notebook_path}}"
          },
          "parameters": {
            "notebook_path": "/Workspace/Users/xxx/monthly_notebook"
          }
        }
      ],
      "schedule": {
        "quartz_cron_expression": "0 0 8 1 * ?",
        "timezone_id": "Asia/Shanghai"
      }
    }
    

    复制配置修改参数和调度表达式,就能快速生成对应不同Notebook的调度任务。

二、调度带有任务参数的日期

Databricks Job Workflow支持直接传递调度时间参数,也可自定义日期格式,操作如下:

  • 使用系统内置调度变量
    在任务参数中直接引用内置变量:{{scheduled_time}}(ISO 8601格式,比如2024-05-20T08:00:00+08:00)或{{scheduled_date}}(仅日期部分,2024-05-20)。在Notebook中通过以下代码获取:

    run_date = dbutils.widgets.get("run_date")
    print(f"本次运行日期:{run_date}")
    

    创建调度计划后,系统会自动将对应时间值传入参数。

  • 自定义日期格式参数
    如果需要特定格式(比如YYYYMMDD),可以在控制Notebook中对{{scheduled_time}}做格式转换,或者在任务参数中用表达式生成,比如date_format(current_timestamp(), 'yyyyMMdd'),再传递给Notebook使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:30:57