跳转到内容

针对调用方驱动因素表中每个选定的行,各运行一次宏。每个子调用的行为与 Macro Run 步骤相同:

  • 获得全新的 run_id。
  • 在自己的临时架构(macrorun_<run_id>)中运行。
  • 从调用方接收表、标量和维度绑定。
  • 子调用以 done 或 warn 状态结束时,将声明的输出表复制回调用方的目标位置。
  • 子调用结束、失败或被停止时,删除临时架构。

当同一个可复用流程需要针对多行运行时,请使用 Macro Concurrent,例如每个驱动因素表行对应一个期间、实体、客户、文件批次或区域。

  • 表 — 调用方的表,每一行对应一次宏调用。
  • 并发运行 — 同时保持活动的子宏调用的最大数量。

选择每个子调用所需的驱动因素表列。这些列可用于宏绑定和驱动因素筛选器。

可为驱动因素表添加筛选规则。只有匹配的行才会启动子宏调用。

  • 项目 — 包含该宏的项目。在 v1 中必须与调用方位于同一项目。
  • 宏 — 为每个选定的驱动因素行调用的宏工作流。

输入绑定将调用方的数据连接到宏声明的输入。

表输入绑定:

  • 调用方源表 — 复制到子调用临时架构中的表。
  • 宏目标端口 — 接收所复制表的宏输入表名称或端口。
  • 复制入筛选器 — 可选的 WHERE 子句,在复制入时应用。
  • 列 JSON — 可选的 JSON 列投影,仅需复制选定列时使用。

标量和维度输入绑定:

  • 宏变量 — 为子调用设置的宏端变量。
  • 值 — 要绑定的字面值、调用方变量引用或驱动因素列的值。

标量和维度输入在表复制入之前设置,因此表筛选器可以引用这些变量。

输出绑定将宏的结果表复制回调用方的目标位置。

  • 宏源端口 — 要从中复制的宏输出表名称或端口。
  • 调用方目标表 — 要复制到的调用方的表。
  • 列 JSON — 复制出时可选的 JSON 列投影。

每个驱动因素行都必须解析为不同的目标表,因此请在目标名称中包含驱动因素列,例如 results_{region}。复制出会替换目标表而不是追加,所以两行若解析为同一目标,只会保留第二行的结果;该步骤会在启动任何操作之前拒绝这种配置。若要将结果合并到一个表中,请在下游添加一个步骤,对各行的表执行合并。

已停止的子调用会跳过复制出,因此不完整的结果不会写入持久的调用方表。

子调用结束时会自行报告结果,因此所在机器无预警停止的子调用根本不会报告任何内容。该步骤不会无限期等待,而是检查它仍在等待的每个子调用是否存活。

  • 已启动的子调用大约每分钟检查一次,且仅在没有任何进展迹象时检查。子调用正在执行单个长时间运行的步骤时,在该步骤耗时期间不会显示进展;只要它确实仍在运行,就不会被打扰。
  • 已被接受但在 15 分钟内未启动的子调用,视为从未启动。该时间窗口涵盖调度和镜像拉取,不包括宏自身的工作。

以上任一情况下,该子调用都会被停止,其临时架构会被删除,并且步骤最终失败,失败信息会指出该调用、它最后报告的状态以及最后一次报告的时间。

其他子调用不受影响。 它们会运行至完成,输出表也会正常写入,因此多个子调用中有一个无响应时,不会丢弃其余结果。失败信息中只会列出未能完成的调用。

如果检查本身无法得到答复(例如平台短暂不可达),则该子调用被视为仍在运行,并在下一轮再次检查。

停止父级 Macro Concurrent 步骤会停止每个活动的子宏调用,并删除每个活动的运行架构。父级停止后,尚未启动的子调用不会再被启动。