Macro Concurrent 步骤
针对调用方驱动因素表中每个选定的行,各运行一次宏。每个子调用的行为与 Macro Run 步骤相同:
- 获得全新的
run_id。 - 在自己的临时架构(
macrorun_<run_id>)中运行。 - 从调用方接收表、标量和维度绑定。
- 子调用以
done或warn状态结束时,将声明的输出表复制回调用方的目标位置。 - 子调用结束、失败或被停止时,删除临时架构。
当同一个可复用流程需要针对多行运行时,请使用 Macro Concurrent,例如每个驱动因素表行对应一个期间、实体、客户、文件批次或区域。
- 表 — 调用方的表,每一行对应一次宏调用。
- 并发运行 — 同时保持活动的子宏调用的最大数量。
选择每个子调用所需的驱动因素表列。这些列可用于宏绑定和驱动因素筛选器。
驱动因素筛选器
Section titled “驱动因素筛选器”可为驱动因素表添加筛选规则。只有匹配的行才会启动子宏调用。
- 项目 — 包含该宏的项目。在 v1 中必须与调用方位于同一项目。
- 宏 — 为每个选定的驱动因素行调用的宏工作流。
输入绑定将调用方的数据连接到宏声明的输入。
表输入绑定:
- 调用方源表 — 复制到子调用临时架构中的表。
- 宏目标端口 — 接收所复制表的宏输入表名称或端口。
- 复制入筛选器 — 可选的
WHERE子句,在复制入时应用。 - 列 JSON — 可选的 JSON 列投影,仅需复制选定列时使用。
标量和维度输入绑定:
- 宏变量 — 为子调用设置的宏端变量。
- 值 — 要绑定的字面值、调用方变量引用或驱动因素列的值。
标量和维度输入在表复制入之前设置,因此表筛选器可以引用这些变量。
输出绑定将宏的结果表复制回调用方的目标位置。
- 宏源端口 — 要从中复制的宏输出表名称或端口。
- 调用方目标表 — 要复制到的调用方的表。
- 列 JSON — 复制出时可选的 JSON 列投影。
每个驱动因素行都必须解析为不同的目标表,因此请在目标名称中包含驱动因素列,例如 results_{region}。复制出会替换目标表而不是追加,所以两行若解析为同一目标,只会保留第二行的结果;该步骤会在启动任何操作之前拒绝这种配置。若要将结果合并到一个表中,请在下游添加一个步骤,对各行的表执行合并。
已停止的子调用会跳过复制出,因此不完整的结果不会写入持久的调用方表。
子调用停止响应时
Section titled “子调用停止响应时”子调用结束时会自行报告结果,因此所在机器无预警停止的子调用根本不会报告任何内容。该步骤不会无限期等待,而是检查它仍在等待的每个子调用是否存活。
- 已启动的子调用大约每分钟检查一次,且仅在没有任何进展迹象时检查。子调用正在执行单个长时间运行的步骤时,在该步骤耗时期间不会显示进展;只要它确实仍在运行,就不会被打扰。
- 已被接受但在 15 分钟内未启动的子调用,视为从未启动。该时间窗口涵盖调度和镜像拉取,不包括宏自身的工作。
以上任一情况下,该子调用都会被停止,其临时架构会被删除,并且步骤最终失败,失败信息会指出该调用、它最后报告的状态以及最后一次报告的时间。
其他子调用不受影响。 它们会运行至完成,输出表也会正常写入,因此多个子调用中有一个无响应时,不会丢弃其余结果。失败信息中只会列出未能完成的调用。
如果检查本身无法得到答复(例如平台短暂不可达),则该子调用被视为仍在运行,并在下一轮再次检查。
停止父级 Macro Concurrent 步骤会停止每个活动的子宏调用,并删除每个活动的运行架构。父级停止后,尚未启动的子调用不会再被启动。
- 创建宏 — 将工作流声明为宏并定义其端口约定。
- Macro Run 步骤 — 调用一次宏。