将作业参数化

参数可用于将值传递给作业及其任务,并在任务之间引用值。 本文介绍 Lakeflow 作业中可用的参数类型以及如何在 UI 中配置它们。 你还必须更新那些配置为任务并引用参数的源代码资产。 参数引用因语言和任务类型而异。 请参阅 任务的 Access 参数值

下面是用于了解作业参数的基本概念:

使用参数可以执行哪些操作

为支持以下高级用例,向作业和任务添加参数:

  • 向代码资产添加可扩展逻辑。
  • 为运行设置条件。
  • 跨多个任务引用通用参数。
  • 在另一个任务中使用一个任务中生成的信息。
  • 引用作业运行中的元数据和状态信息。

作业参数与任务参数

作业参数是在作业级别定义的键值对。 你可以在立即使用不同的参数运行时替代作业参数的默认设置,也可以使用 REST API 触发作业运行。 作业参数被向下推送到使用键值参数的任务。 其他任务可以使用动态值引用来引用作业参数。

注意

任何对作业具有 CAN MANAGE RUN 权限或更高权限的用户都可以使用 “立即运行”来替代具有不同参数的手动运行作业参数值。 默认参数值不是安全控件。 若要防止更改,请限制作业 的权限

任务参数是任务级别定义的键值对或 JSON 数组。 每个任务类型以不同的方式将任务值传递给配置的代码资产。 例如,笔记本任务使用 dbutils.widgets 子模块,而 Python 脚本将值作为参数传递给脚本,就像从命令行调用一样。 下游任务可以使用动态值引用来引用上游任务的任务参数。 请参阅 任务的 Access 参数值

注意

有些任务没有专用的“参数”字段,但允许在其他字段中引用任务值或动态值引用。 请参阅参数化的 dbt 命令的示例向具有 If/else 任务的作业添加分支逻辑

使用动态值生成工作流

使用静态值设置的任务参数只能通过更新任务定义来替代。 为作业参数设置静态值只是配置默认值,可以在立即使用不同的参数运行时替代默认值,也可以使用 REST API 触发作业运行。

定义任务参数时使用动态值引用来实现以下模式:

  • 对于一个任务,将作业参数用作 output_table,对于另一个任务,将其用作 input_table
  • 将笔记本查询的输出捕获为列表,并在 For each 任务中对其进行循环处理。
  • 根据使用If/else condition任务处理的记录数量创建分支逻辑。
  • 请参阅其他任务中的参数。

请参阅 动态值引用