使用
本文讨论如何将 For each 任务与 Lakeflow 作业配合使用,包括有关在作业 UI 中添加和配置任务的详细信息。 使用该 For each 任务在循环中运行嵌套任务,将一组不同的 参数 传递给任务的每个迭代。
将 For each 任务添加到作业需要定义两个任务:For each 任务和 嵌套任务。 嵌套任务是用于每次迭代 For each 任务的运行任务,并且是标准 Lakeflow 作业任务类型之一。 不能将另一个 For each 任务添加为嵌套任务。
例如,可以使用 For each 任务对多个表执行一组常见的转换,并将表名列表中的表名传递给任务的每次迭代。
可以同时运行不相互依赖的嵌套任务。
将 For each 任务添加到作业
可以在创建作业或编辑在现有作业中的任务时添加 For each 任务。 要配置 For each 任务,请:
单击“ 添加任务”。
在 “任务名称 ”字段中输入名称。
在“类型”下拉菜单中,选择“对于每个”。
在“任务名称”字段中输入任务的名称。
在 “输入 ”文本框中,定义要循环访问的任务的值
For each作为 JSON 格式的值数组。 若要了解有关将参数传递到嵌套任务的详细信息,请参阅 可以对For each任务使用哪些参数类型?。若要选择设置可并行运行的迭代次数,请输入任务的“并发”值。 默认值是 1秒。
若要有选择地接收任务开始通知、成功通知或失败通知,请单击“+ 添加”。 请参阅为作业添加通知。
若要完成
For each任务的配置,并为每个迭代添加一个嵌套任务,请单击“添加要循环访问的任务”。为嵌套任务选择任务类型和配置选项。 嵌套任务是标准任务类型,具有相同的配置选项。 参阅 Lakeflow 作业中任务的配置与编辑方法。
若要引用
For each任务传递的参数,请单击“参数”。 使用{{input}}引用将值设置为每次迭代的数组值,或者在循环访问对象列表时使用{{input.<key>}}引用单个对象字段。
单击“创建任务”。
在 For each 任务与嵌套的任务之间进行切换
For each 任务在作业 UI 中显示为一个节点,该节点内部含有 For each 节点的嵌套任务节点。 若要在 For each 任务和嵌套任务之间切换,请单击相应节点。
任务 UI 中的 DAG 视图切换到嵌套任务
可以对 For each 任务使用哪些参数类型?
该 For each 任务将参数传递给嵌套任务的每个迭代。 输入是一个对象数组,每个对象都传递给嵌套任务的迭代。 有多种方法可以创建任务使用的输入:JSON 格式数组、任务值或作业参数。
注释
在 UI 中,参数直接限制为 5,000 个字符;如果使用任务值引用,则限制为 48 KB(其中值可能比描述它的字符串大小要大得多);作业参数值则限制为 10,000 个字符。 如果参数需要 48 KB 以上,可以将查找传递给更大的配置文件。 请参阅 对大型参数数组使用查找表。
JSON 格式的值数组
创建或编辑任务时,可以使用 “输入 ”文本框直接定义嵌套任务的值数组。 可以是以下数据类型的数组:
- 键值对
- 字符串、数字或布尔类型
- 任意复杂 JSON 对象
“输入”文本框(因此直接在此框中传递的 JSON)限制为 5,000 个字符。
任务值引用
可以从前面的任务传递任务值。 若要引用传递的任务值,请使用 {{tasks.<task_name>.values.<task_value_name>}} 语法在 “输入 ”文本框中设置值。 例如,如果在 generate_countries_list 任务之前名为 For each 的任务设置了以下任务值:
dbutils.jobs.taskValues.set(key = "countries", value = countries_array)
然后,For each 任务使用以下语法在“输入”文本框中引用该任务值:
{{tasks.generate_countries_list.values.countries}}。
可以在 “输入 ”文本框中最多放置 5,000 个字符,但引用表示的值最多可为 48 KB。 要了解有关任务值的详细信息,请参阅使用任务值在任务之间传递信息。
作业参数
还可以使用作业参数作为输入。 若要引用作业参数,请在“输入”文本框中使用以下语法:{{job.parameters.<name>}} 例如,{{job.parameters.countries}}。
可以在 “输入 ”文本框中最多放置 5,000 个字符来引用作业参数。 作业参数值限制为 10 KB。 要了解有关作业参数的详细信息,请参阅配置作业参数。
在下游任务中引用 For each 任务
For each 任务是顶级任务,下游任务可以将其指定为依赖项。 下游任务不能依赖或引用嵌套任务。
运行包含 For each 任务的作业并进行监视
运行包含 For each 任务的作业与运行其他作业相同。
查看和管理作业运行也与其他任何作业相同,除For each任务的任务运行历史记录外,该记录以任务迭代的表格形式显示。 请参阅任务的运行历史记录For each。