将有关作业运行的上下文传递到作业任务中

可以使用动态值引用传递有关作业或任务运行的上下文,例如作业或任务名称、运行标识符或作业运行的开始时间。 动态值引用是模板化变量,当作业任务运行时,这些变量将替换为相应的值。 运行作业时,将替换由双花括号括起来的任务参数变量,并将其追加到作为值的一部分包含的可选字符串值。 例如,要为作业 ID 6 的任何运行传递名为 MyJobId 且值为 my-job-6 的参数,请添加以下任务参数:

{
  "MyJobID": "my-job-{{job.id}}"
}

双花括号的内容不会作为表达式进行计算,因此不能在双花括号内执行运算或函数。

对于用户提供的标识符(例如,任务名称、任务值键或包含特殊字符的作业参数名称),必须通过在标识符两边加上反引号 (` `) 进行转义。 在不进行转义的情况下,只能使用字母数字和下划线字符。

{
  "VariableWithSpecialChars": "{{job.parameters.`param$@`}}"
}

引用中的语法错误(例如缺少大括号)将被忽略,值被视为文本字符串。 例如,{{my.value} 作为字符串 "{{my.value}" 传递。 但是,不允许输入属于已知命名空间(例如 {{job.naem}})的无效引用。 如果在 UI 中输入了属于已知名称空间的无效引用,则会显示错误消息。

任务完成后,可以在运行详细信息页的“参数”下查看参数的解析值。

支持的值引用

支持以下动态值引用:

参考 说明
{{job.id}} 分配给作业的唯一标识符。
{{job.name}} 作业运行时作业的名称。
{{job.run_id}} 分配给作业运行的唯一标识符。
{{job.repair_count}} 当前作业运行的修复尝试次数。
{{job.start_time.[argument]}} 基于作业运行开始时间(UTC 时区)的值。 返回值基于 argument 选项。 请参阅日期和时间值的选项
{{job.parameters.[name]}} 具有 [name] 键的作业级参数的值。
{{job.trigger.type}} 作业运行的触发器类型。 可能的值为 periodiconetimerun_job_taskfile_arrivalcontinuoustable
{{job.trigger.file_arrival.location}} 如果为此作业配置了文件到达触发器,则为存储位置的值。
{{job.trigger.time.[argument]}} 基于触发作业运行的时间(UTC 时区)的值,对于具有 cron 计划的作业,向下舍入到最接近的分钟。 返回值基于 argument 选项。 请参阅日期和时间值的选项
{{task.name}} 当前任务的名称。
{{task.run_id}} 当前任务运行的唯一标识符。
{{task.execution_count}} 运行当前任务的次数(包括重试和修复)。
{{task.notebook_path}} 当前笔记本任务的笔记本路径。
{{tasks.[task_name].run_id}} 分配给 [task_name] 的任务运行的唯一标识符。
{{tasks.[task_name].result_state}} 任务的结果状态 [task_name]。 可能的值为 successfailedexcludedcanceledevictedtimedoutupstream_canceledupstream_evictedupstream_failed
{{tasks.[task_name].error_code}} 任务 [task_name] 运行时出错的错误代码。 可能的值举例如下:RunExecutionErrorResourceNotFoundUnauthorizedError。 对于成功的任务,其值为空字符串。
{{tasks.[task_name].execution_count}} 运行任务 [task_name] 的次数(包括重试和修复)。
{{tasks.[task_name].notebook_path}} 笔记本任务 [task_name] 的笔记本路径。
{{tasks.[task_name].values.[value_name]}} 具有由任务 [task_name] 设置的 [value_name] 键的任务值。
{{workspace.id}} 分配给工作区的唯一标识符。
{{workspace.url}} 工作区的 URL。

创建作业编辑作业使用不同参数运行作业时,可以为任何任务设置这些引用。

还可以在具有任务值的作业中的任务之间传递参数。 请参阅在 Azure Databricks 作业中的任务之间共享信息

日期和时间值的选项

使用以下参数指定基于时间的参数变量的返回值。 所有返回值都基于时间戳(UTC 时区)。

参数 说明
iso_weekday 将返回一个介于 1 到 7 的数字,表示时间戳的星期几。
is_weekday 如果时间戳在工作日,则返回 true
iso_date 以 ISO 格式返回日期。
iso_datetime 以 ISO 格式返回日期和时间。
year 返回时间戳的年份部分。
month 返回时间戳的月份部分。
day 返回时间戳的日期部分。
hour 返回时间戳的小时部分。
minute 返回时间戳的分钟部分。
second 返回时间戳的秒部分。
timestamp_ms 返回时间戳(以毫秒为单位)。

弃用的参数变量

以下参数变量已弃用。 尽管这些引用仍然受支持,但任何新作业或现有作业的更新都应使用支持的值引用。 建议的替换引用包含在每个变量的说明中。

变量 说明
{{job_id}} 分配给作业的唯一标识符。 请改用 job.id
{{run_id}} 分配给任务运行的唯一标识符。 请改用 task.run_id
{{start_date}} 任务运行的开始日期。 格式为 UTC 时区的 yyyy-MM-dd。 请改用 job.start_time.[argument]
{{start_time}} 创建并准备好群集后运行开始执行的时间戳。 格式为 UTC 时区自 UNIX 纪元以来的毫秒数,如 System.currentTimeMillis() 所返回。 请改用 job.start_time.[format]
{{task_retry_count}} 第一次尝试运行任务失败后的重试次数。 第一次尝试时的值为 0,每次重试时值会递增。 请改用 task.execution_count
{{parent_run_id}} 分配给具有多个任务的作业运行的唯一标识符。 请改用 job.run_id
{{task_key}} 分配给作为作业的一部分的任务的唯一名称,该作业具有多个任务。 请改用 task.name