参数化作业

本文概述了如何在作业和任务中使用参数。

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

可以使用参数做些什么?

将参数添加到高级用例的作业和任务,包括以下内容:

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

作业和任务参数之间的区别是什么?

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

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

注意

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

使用动态值生成工作流

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

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

  • 对于一个任务,将作业参数用作 output_table,对于另一个任务,将其用作 input_table
  • 将笔记本查询的输出捕获为列表,并在“对于每个”任务中循环访问它。
  • 根据使用 If/else 条件任务处理的记录数创建分叉逻辑。
  • 请参阅其他任务中的参数。

请参阅什么是动态值引用?