背景
当控制表有很多行或处理时间过长时,使用并行链可以显著减少运行时间。
示例场景
假设你的链中有一个使用 组迭代器的命令组。在此设置中,控制表内容是通过 获取工作表数据 命令从 Workiva 电子表格中检索的。然后,该流程会针对表格中的每一行重复执行一系列操作。(请参阅此处的设置说明 。 )
如果 控制表行的执行顺序无关紧要,并且每一行都可以独立处理,则可以通过以下步骤并行运行它们来提高链的效率。
注: 以下步骤基于上面所示的示例链。请根据您自己的指令链及其可能包含的任何额外指令进行必要的调整。
步骤 1:准备你的主链
- 删除所有节点之间的所有链接。
- 删除 CSV转 JSON和 命令组 节点。
- 从 表格转换 连接器添加 [ 高级查询 命令,并将其连接到 获取工作表数据 节点。
- 使用以下值配置节点:
- 表格 > 文件: 从变量面板中选择 获取工作表数据 > 数据 输出。
- 表 > 表名: 使用不带空格的名称 。
- 查询:使用 MySQL
NTILE函数为每一行分配一个组号(例如,NTILE(3)表示三个组)。
注意: 您需要测试您的流程,以找到符合您所需运行时间的合适组数。作为最佳实践,该数字应小于 10。
步骤二:设置子链并行运行
- 在由 运行链 事件执行的子链中,添加或修改 运行时输入 命令。提醒一下,这个 必须是链的第一个节点。为其配置两个输入:一个 FileField 输入用于数据文件,一个 NumberField 输入用于组号。
- 为确保每个实例只处理其分配的行,请在 Runtime Inputs 命令之后、其他命令之前立即连接 Filter Rows 命令。该筛选器将按组号隔离记录,确保所有后续命令仅对正确的行进行操作。
注: “搜索列”字段从 0 开始计数。
- 在 链设置中,确保启用 允许并发运行 选项。
步骤 3:传递文件和组号
- 在主链中,为
NTILE函数中使用的每个 组号添加一个 Run Chain 命令(例如,需要 3 个命令)。NTILE (3)- 数据文件 运行时输入:选择 高级查询 > 结果 从变量面板输出。
- 组号 运行时输入:一个从 1 到组总数的唯一数字。
结果
您的处理流程现在可以一次性处理来自控制表的三倍行数。您可以通过增加 NTILE 的数量并添加相应的 Run Chain 命令来进一步扩展此功能。
警告
- 避免同时运行过多的并行链,因为这样做可能会超出平台限制,导致命令失败。作为最佳实践,并行链的数量应少于 10 条。
- 所有链式解决方案在使用于实际生产环境之前,都应该针对各种极端情况和所有相关数据类型进行彻底测试。
- 嵌套层数超过六层的链 Run Chain 用法可能无法正确导出或导入。
其他资源
如需了解更多关于链条控制表的信息,请查看我们的其他资源。