参数化

本节介绍参数以及如何在作业和任务中使用这些参数。

关于参数

可以通过传递更改作业、任务或作业运行行为的参数来定制作业运行。

可以在工作流的三个不同级别提供参数:作业级别、任务级别和作业运行级别。在发生冲突时,参数具有以下优先级:作业运行 > 任务 > 作业。

  1. 作业运行级别参数:在作业运行有效负载中指定的作业运行级别参数优先于在作业配置中定义的任务级别参数。这意味着在作业运行期间指定的任何参数都会覆盖特定于任务的默认值。
  2. 任务层参数:如果未提供特定任务的作业运行参数,则任务将使用在作业配置中的任务层定义的参数。具有相同名称的作业级参数将覆盖该特定任务的任务级参数。因此,如果需要特定于任务的参数,则应将其命名为作业参数。
  3. 任务层参数:如果既未提供任务层参数,也未提供运行时参数,则应用在任务层设置的默认值。作业级别参数被视为默认值,在没有更具体的参数可用时可以使用这些默认值。

注意:

任务参数在任务上下文中不可变。这意味着,如果存在参数为 JobParamA 且解析值为 JobParamRuntimeValueA 的作业,则 TaskA 执行无法更改 JobParamA 的值。对于所有任务和整个作业运行,JobParamA 的值保持为 JobParamRuntimeValueA。因此,如果您希望在任务之间共享信息,可以使用中间存储或输出参数来实现此目的。

当任务名称、任务值关键字或作业参数名称包含特殊字符(例如 !@$%)时,必须使用反引号 (` `) 将这些标识符括起来。只有字母数字和下划线字符才可用,且背勾中的标识符没有周围。

例如:

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

系统参数是模板参数,其值由系统在工作流运行和后续任务运行过程中提供。您不必为这些模板参数提供默认值或其他值。AI Data Platform Workbench 包含工作流中支持的有效模板参数/动态值参考的固定列表。系统参数通过用两个大括号括起来输入。例如 {{job.id}}

表 12-1 支持的系统参数

Parameter (参数) 说明
免费 WiFi 分配给集线器的唯一标识符
免费 WiFi 中心区域
{{workspace.id}} 分配给工作区的唯一标识符
联系我们 工作区的 URL
详细介绍 分配给作业的唯一标识符
免费 WiFi 作业运行时的作业名称
免费 WiFi 分配给作业运行的唯一标识符
免费 WiFi 当前作业运行的修复尝试次数
免费 WiFi 基于作业运行开始的时间(以 UTC 时区表示)的值。返回值基于参数选项。请参阅选项以了解日期和时间值。
免费 WiFi 关键字为 [name] 的作业级参数的值
详细介绍 作业运行的触发器类型。可能的值为“人工”和“已计划”。
友情链接: 如果为此作业配置了文件到达触发器,则存储位置的值
温哥华酒店查看景点 基于触发作业运行的时间(以 UTC 时区为单位)的值,向下舍入到具有 cron 调度的作业的最接近分钟。返回值基于参数选项。请参阅选项以了解日期和时间值。
免费 WiFi 当前任务的名称
详细介绍 当前任务运行的唯一标识符
详细介绍 当前任务的运行次数(包括重试和维修)
免费 WiFi 当前记事本任务的记事本路径
友情链接: 分配给 [task_name] 的任务运行的唯一标识符
{{tasks_name].result_state}} 任务的结果状态 [task_name]。可能的值包括 success、failed、exluded、sceled、skipped、timed out、upstream_canceled 和 upstream_failed。
友情链接: 任务 [task_name] 的错误代码(如果运行任务时出错)。可能值的示例包括 RunExecutionError、ResourceNotFound 和 UnauthorizedError。对于成功的任务,求值结果为空字符串。
{{tasks.[task_name].execution_count}} 运行任务 [task_name] 的次数(包括重试和修复)
{{tasks.[task_name].notebook_path}} 记事本任务的记事本的路径 [task_name]
友情链接:友情链接 任务 [task_name] 设置的关键字为 [value_name] 的任务值

表 12-2:日期和时间选项

参数 说明
iso-weekday 返回从 1 到 7 的数字,表示时间戳中的星期几
is_weekday 如果时间戳位于工作日,则返回 true
iso_ 日期 返回 ISO 格式的日期
等日期时间 返回 ISO 格式的日期和时间
返回时间戳的年份部分
月份 返回时间戳的月部分
天运行一次 返回时间戳的天部分
小时 返回时间戳的小时部分
分钟 返回时间戳的分钟部分
返回时间戳的第二部分
时间戳 _ms 返回时间戳(毫秒)

在任务和记事本之间传递参数

您可以将参数从任务传递到记事本,反之亦然。这支持动态工作流行为,允许记事本根据运行时值调整其处理。

oidlUtils.parameters 程序包提供了处理这些参数操作的必要功能。oidlUtils 软件包是 AI Data Platform Workbench 中的一个实用程序库,可简化参数管理、任务值传递和其他工作流操作等任务。它通常用于记事本和任务中,用于获取和设置工作流阶段的参数。

任务关键字值是字符串或 JSON。例如,要使用字符串作为任务关键字值,参数调用将如下所示:
oidlUtils.parameters.setTaskValue(key="payload", value="abc", "defaultValue")
要使用 JSON 作为任务键值,参数调用如下所示:
oidlUtils.parameters.setTaskValue(key="payload", value=json.dumps(payload), "defaultValue")

工作流示例:传递参数

在这种情况下,我们在工作流中具有两个记事本。记事本 1 从任务接收参数,处理参数,并设置在下一个任务中传递给记事本 2 的输出参数。

记事本 1:获取和设置参数
# Get parameter if already set in the task
param_key = "param1"
param_value = oidlUtils.parameters.getParameter(param_key, "defaultValue")
print(param_value)
print("Param {} value is {}".format(param_key, param_value))

 
# Set parameter value in the task
output_parameter_key = "output_parameter"
output_param_value = oidlUtils.parameters.getParameter(output_parameter_key, "defaultValue2")
print("Param {} value is {}".format(output_parameter_key, output_param_value))
oidlUtils.parameters.setTaskValue(output_parameter_key, "1234")

第一个记事本检索从任务传递的参数 (param1),然后设置一个新参数 (output_param_2),该参数将在下一个任务中使用。

记事本 2:读取输出参数
output_param_2= "output_parameter"
param_value = oidlUtils.parameters.getTaskValue("GetSetParameter", output_param_2, "defaultValue")
print("Param {} value is {}".format(output_param_2, param_value))

第二个记事本通过工作流任务从记事本 1 接收 output_param_2 并对其进行处理。

  1. 任务 1:记事本 1
    • 在第一个任务中,参数可以从作业或任务本身传递到记事本 1。
    • 记事本 1 将参数作为输入参数 param1 处理,并设置新的输出参数(例如 output_param_2)。
  2. 任务 2:记事本 2
    • 在第二个任务中,记事本 2 通过传递工作流中设置的第一个任务 "GetSetParameter" 的名称,直接在上面所示的记事本代码中引用它来接收任务 1 的输出参数。
    • output_param_2 的值传递到记事本 2 中,该值可用于进一步处理。

这种方法可以轻松地在任务和记事本之间动态传递值,从而使您的工作流更加灵活和自适应。

将参数添加到作业

可以为职务提供不同的跟踪参数。

  1. 在主页中,单击工作流
  2. 单击要向其添加参数的作业,然后单击详细信息选项卡。
  3. 在“作业参数”下,提供要跟踪的关键字和值。要添加多个参数,请单击 “新建权限”图标 添加参数
    您所做的更改将自动保存。

从作业中删除参数

您将更新作业以删除不再需要的参数。

  1. 在主页中,单击工作流
  2. 单击要删除参数的作业,然后单击详细信息选项卡。
  3. 在作业参数下,单击要删除的参数旁边的 “删除”图标 删除
    您所做的更改将自动保存。

将参数添加到任务

您可以向任务添加参数以更改其行为。

  1. 在主页中,单击工作流
  2. 单击包含要向其添加参数的任务的作业,然后单击任务选项卡。
  3. 单击要向其添加参数的任务。
  4. 参数下,输入参数的键和值。要添加多个参数,请单击 “添加参数”图标 添加参数
    您所做的更改将自动保存。

从任务中删除参数

您可以从任务中删除不需要的参数。

  1. 在主页中,单击工作流
  2. 单击包含要删除参数的任务的作业,然后单击任务选项卡。
  3. 单击要删除参数的任务。
  4. 单击要删除的每个参数旁边的 “删除”图标 删除
    您所做的更改将自动保存。

运行具有不同参数值的作业

您可以选择使用修改的参数值立即运行作业。

  1. 在主页中,单击工作流
  2. 单击要运行的作业。
  3. 单击立即运行旁边的向下箭头。单击使用不同的参数立即运行

    展开了“Run now(立即运行)”按钮,其中突出显示了不同的参数选项

  4. 输入新的值。这些参数值仅适用于此作业运行。

    使用不同的参数值提示立即运行

  5. 单击运行