参数化作业
本文概述了如何在作业和任务中使用参数。
下面是用于了解作业参数的基本概念:
- 作业参数:在作业级别定义并向下推送到任务的键值对。 请参阅配置作业参数。
- 任务参数:在任务级别定义的键值对或 JSON 数组。 请参阅配置任务参数。
- 动态值引用:引用作业条件、元数据和参数的语法。 请参阅什么是动态值引用?。
- 任务值:用于捕获和引用任务运行期间生成的值的语法。 请参阅使用任务值在任务之间传递信息。
可以使用参数做些什么?
将参数添加到高级用例的作业和任务,包括以下内容:
- 向代码资产添加可扩展逻辑。
- 条件化运行。
- 跨多个任务引用通用参数。
- 在另一个任务中使用一个任务中生成的信息。
- 引用作业运行中的元数据和状态信息。
作业和任务参数之间的区别是什么?
作业参数是在作业级别定义的键值对。 你可以在立即使用不同的参数运行时替代作业参数的默认设置,也可以使用 REST API 触发作业运行。 作业参数被向下推送到使用键值参数的任务。 其他任务可以使用动态值引用来引用作业参数。
任务参数是在任务级别定义的 JSON 数组的键值对。 每个任务类型以不同的方式将任务值传递给配置的代码资产。 例如,笔记本任务使用 dbutils.widgets
子模块,而 Python 脚本将值作为参数传递给脚本,就像从命令行调用一样。 下游任务可以使用动态值引用从上游任务引用任务参数。
注意
有些任务没有专用的“参数”字段,但允许在其他字段中引用任务值或动态值引用。 请参阅参数化的 dbt 命令的示例和向具有 If/else 任务的作业添加分支逻辑。
使用动态值生成工作流
使用静态值设置的任务参数只能通过更新任务定义来替代。 为作业参数设置静态值只是配置默认值,可以在立即使用不同的参数运行时替代默认值,也可以使用 REST API 触发作业运行。
定义任务参数时使用动态值引用来实现以下模式:
- 对于一个任务,将作业参数用作
output_table
,对于另一个任务,将其用作input_table
。 - 将笔记本查询的输出捕获为列表,并在“对于每个”任务中循环访问它。
- 根据使用 If/else 条件任务处理的记录数创建分叉逻辑。
- 请参阅其他任务中的参数。
请参阅什么是动态值引用?。