使用
本文讨论如何将 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
任务和嵌套任务之间切换,请单击相应节点。
可以对 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
。