高级工作流(可视化工作流设计器)
高级工作流在可视化画布(即可视化工作流设计器)上运行,其中的步骤是有向图(DAG)中的节点。节点之间的连线表示数据的流向,运行时按依赖顺序而不是自上而下的顺序执行。相互不依赖的分支会自动并行运行。
高级是 PlaidCloud 的工作流类型之一,另一种是标准。本指南中的功能(可视化画布、断点、容器、从此处运行、模拟以及停靠式检查器)均仅适用于高级工作流。画布还支持实时协作:多人可以同时打开同一个高级工作流并一起编辑,实时看到彼此的在线状态和更改。
每个工作流都有一个类型,在创建时选择:
| 类型 | 步骤的排列方式 | 执行方式 |
|---|---|---|
| 标准串行 | 步骤列表 | 自上而下,一次一个 |
| 标准并行 | 步骤列表 | 按列表顺序,在依赖允许的情况下并行 |
| 高级(DAG 画布) | 由节点和连线组成的可视化图 | 按依赖顺序,独立的分支自动并行运行 |
标准工作流和高级工作流运行在不同的引擎上:标准工作流根据其步骤列表执行,而高级工作流根据您绘制的图执行,遵循步骤之间明确的生产者/使用者连接。因此,可视化工作流设计器只对高级工作流开放,因为在标准工作流上绘制箭头并不会改变其运行方式。
选择工作流类型
Section titled “选择工作流类型”可以在创建工作流时设置类型,也可以转换现有的标准工作流:
- 创建时:工作流类型选择器提供标准串行、标准并行、高级(DAG 画布) 和宏(即将推出)。新工作流默认为标准串行。
- 转换现有工作流:在工作流列表中选择一个标准工作流,选择转换为高级… ,然后确认。步骤、步骤配置及其依赖关系都会保留,改变的只是工作流的显示方式和执行方式。
通过 REST API 或 AI 助手将工作流类型从标准更改为高级时,步骤顺序的保留方式与转换为高级… 相同。不允许将高级工作流改回标准。
每个步骤是一个节点,节点之间的连线决定了步骤的运行顺序。设计器会自动排列步骤,您也可以自由重新排列。
当前在线的用户
Section titled “当前在线的用户”当不止一个人打开同一个高级工作流时,画布工具栏中会出现一排头像,显示还有谁正在查看或编辑该工作流,这与共享文档的实时在线状态概念相同。每个人以其 gravatar 头像显示(没有头像则显示姓名首字母),将鼠标悬停在头像上会显示其姓名。无论一个人在多少个浏览器选项卡中打开了该工作流,都只显示一次;当查看者过多、放不下时,多出的头像会折叠为 +N 标记。
每个磁贴自上而下概括显示其步骤的信息:
- 标题行:步骤类型的图标和名称,以及显示该步骤上次运行结果的状态图标。
- 输入:该步骤读取的每个表、维度或文件对应一个图标。单击表图标可在数据预览抽屉中预览,单击维度图标可打开该维度,单击文件图标可下载该文件。输入或输出很多的步骤会将多出的部分折叠为 +N 标记。
- 步骤名称:在磁贴正文中居中显示。
- 输出:该步骤的输出图标,单击行为相同。输出表存在后,此行还会显示其行数和列数(例如
12,345 rows · 8 cols),与步骤的“输入/输出”表中显示的行数和列数相同,这样无需逐个打开表,即可观察数据量在工作流中的变化。在此之前(或者当步骤输出的是文件或维度时),此行显示普通的输出标签。将鼠标悬停在任何表图标上可查看其名称和数量。 - 页脚:该步骤上次和平均的运行耗时;当最近一次运行相比其历史记录异常缓慢时,会着色提示。
- 放大 / 缩小、Reset zoom to 100% 和使所有节点适应视图,可以按任意大小查看整个工作流。
- Pan tool:启用后,拖动将平移画布而不是选择。无论该开关状态如何,鼠标中键拖动和 Space+拖动都可以平移。
- Snap to grid 会在您放下节点时将其位置对齐到固定网格,使排列整齐。
对于屏幕放不下的大型工作流,可切换 Minimap 在右下角停靠一个概览面板。它以缩小的形式显示整个工作流的步骤和连线,并用一个矩形标出您当前查看的画布部分。
- 视口矩形会随着您的平移和缩放实时移动,因此您始终知道自己位于较大图中的哪个位置。
- 在面板的任意位置单击或拖动,即可将画布跳转到工作流的相应部分。
- 工作流运行时,缩略图中的每个步骤会按其运行状态着色(正在运行、完成、错误等),因此该面板同时也是一目了然的运行状况概览。
- 排列会打开布局操作菜单。每个操作在撤消(Cmd/Ctrl+Z)中都算作一步,应用时无需确认;提示信息为 Layout updated — press Undo to revert。不会产生任何变化的操作不会执行任何操作。请参阅排列画布。
- 撤消和重做可在布局更改之间后退和前进(Cmd/Ctrl+Z 和 Cmd/Ctrl+Shift+Z),历史记录会打开更改面板。
| 操作 | 作用 | 要求 |
|---|---|---|
| 整理全部 | 将所有步骤从左到右排列。 | 始终可用 |
| 整理所选项 | 仅排列所选项目,并保持其左上角位置不变。仅当其他步骤此时会发生重叠时,它们才会下移。 | 2 个以上项目 |
| 消除重叠 | 将重叠的项目下推,直到不再重叠。不会改变它们的顺序。 | 画布上有 2 个以上项目 |
| 左对齐 / 居中对齐 / 右对齐 / 顶部对齐 / 垂直居中对齐 / 底部对齐 | 将所选项目按您选择的边缘或中心对齐。 | 2 个以上项目 |
| 水平分布 / 垂直分布 | 保持第一个和最后一个项目的位置不变,并将其余项目均匀分布在它们之间。 | 3 个以上项目 |
| 全部对齐到网格 | 将画布上的每个项目放到画布网格上,并将随后发生碰撞的项目分开。 | 始终可用 |
- 整理全部会保留您的布局。 步骤仍然从左到右流动,但在每一列内会保持您原有的自上而下的顺序,并且布局保持在画布上的原位,而不会跳回原点。
- 分组保持在一起。 容器作为一个整体进行布局。折叠的容器作为单个磁贴移动,其中隐藏的步骤随之移动。
- 便签和高亮随其步骤一起移动。 放在步骤上的任何内容都会随该步骤一起移动。
- 分组算作一个项目。 对于对齐、分布和整理所选项,容器或折叠的容器算作一个项目,其中的步骤随之移动。
- 全部对齐到网格与导航下的 Snap to grid 开关是分开的,后者只影响您放下步骤时它落在的位置。
- 不可用的操作会变暗。 不适用于当前所选内容的菜单项会显示为灰色。
- 已锁定的工作流会阻止所有排列操作。请先解锁工作流。
注释仅用于视觉展示,用于为图表添加说明,绝不影响执行。
- 添加便签:在画布上任意位置放置一张便签,然后使用编辑文本… 在其中书写(或使用删除便签将其移除)。
- 添加高亮:在一组相关步骤周围绘制半透明的方框,并通过编辑标签… 为其添加标签(或使用删除高亮将其移除)。
- 颜色:为步骤着色(或将其重置为默认),以便直观地对工作分组。
工作流可以被锁定,以防止意外编辑。单击锁定开关可在工作流编辑 — 单击锁定与 Workflow is locked — click to unlock for editing 之间切换。锁定期间,画布为只读,直到您解锁为止。
折叠和调整面板与检查器窗格的大小
Section titled “折叠和调整面板与检查器窗格的大小”左侧的步骤面板和右侧的检查器都可以折叠起来,以便您将整个窗口留给图表。
- 折叠窗格:单击面板标题或检查器标题中的箭头。窗格会缩小为一条窄栏,其标题沿侧边显示。折叠后的检查器栏会显示您所选步骤的名称,因此即使画布占满整个宽度,也不会忘记您正在检查什么;如果名称被截断,可将鼠标悬停在上面查看完整名称。
- 恢复窗格:单击栏上的任意位置,而不仅仅是箭头。
- 键盘:按
[折叠或展开面板,按]折叠或展开检查器。在字段中输入时这两个键会被忽略,因此不会打断筛选框或内联重命名。 - 双击分隔条:双击窗格旁边的分隔条可折叠或展开该窗格,与单击箭头的效果相同。
- 调整大小:拖动任一分隔条。两个窗格都有最小宽度;低于该宽度时,检查器的“输入”和“输出”卡片会横向滚动,而不是截断其名称和行数。
工具栏的导出按钮会将画布保存为图片,用于文档、审阅或分享。单击它会导出 PDF;其下拉菜单提供导出为PDF和导出为PNG。
画布跟随您选择的 PlaidCloud 主题。在深色主题下,画布背景、步骤磁贴、连线、便签、高亮、容器、缩略图,以及旁边的步骤面板、检查器和数据预览抽屉,都按深色背景绘制,并选用了运行状态颜色和标签文字颜色,以确保在其上保持清晰可读。切换主题会重新加载界面,画布在重新打开时会采用新的颜色。
添加、连接和编辑步骤
Section titled “添加、连接和编辑步骤”单击 面板 中的步骤类型可将其放到画布上,也可以将其拖到想要的位置。要连接步骤,请从一个步骤拖动到另一个步骤以绘制连接线,这是告知运行时一个步骤的输出为下一个步骤提供数据的方式。
读取表的步骤应在写入该表的步骤之后运行。工具栏上的同步依赖项会找出可能过早运行的步骤,并建议要添加的连接线。请参阅同步依赖项。
右键单击任何步骤可使用:
- 编辑步骤配置…:步骤的设置表单。
- 编辑步骤详细信息…:名称、备注、错误处理、重试和条件。
- 转换步骤类型…:将步骤更改为其他操作类型。
- 复制步骤…:复制此步骤。步骤表单会在其常规选项卡上打开,并以此步骤的内容填充,以便您重命名副本并选择其位置;副本会保留此步骤的配置。
- 启用步骤 / 禁用步骤:禁用的步骤在运行时会被跳过。
- 查看步骤输入 / 查看步骤输出:在检查器中打开该步骤的数据。
- 预览输出数据:在停靠的数据预览抽屉中打开该步骤的输出。将鼠标悬停在步骤上时,还会淡入一个浏览图标,其作用相同。
- 颜色:应用或清除步骤颜色。
- 删除步骤…:将其从工作流结构中移除。依赖其输出的下游步骤需要重新配置。
子工作流并发
Section titled “子工作流并发”当某个步骤调用另一个工作流时(即指向非宏工作流的运行工作流、有条件运行工作流或循环运行工作流步骤),该子工作流同一时间只能运行一次调用。非宏的子工作流共用一个运行状态,因此同时进行两次调用会发生冲突。
这在高级画布上很重要,因为彼此之间没有顺序关系的步骤会并行运行。如果两个这样的步骤都调用同一个非宏子工作流,它们就会发生竞争。
设计器会在您保存画布时检查这一点,并显示标题为工作流建议的提示消息,其中指出有问题的步骤和共享的子工作流,例如:
步骤“Build”、“Refresh”都调用了非宏子工作流“Load Dims”,但彼此之间没有顺序关系;它们可能并发运行并发生冲突(非宏子工作流不能同时运行两次)。请为这些步骤排序,使其不重叠,或将“Load Dims”设为宏(宏以每次调用相互隔离的方式运行)。
要消除该提示:
- 为步骤排序,使其不重叠:绘制一条连接线,使其中一个在另一个之后运行。
- 将子工作流设为宏:每次宏调用都在各自独立的临时架构中运行,因此可以安全地并发调用同一个宏。请参阅创建宏和 Macro Run 参考。
画布左侧的步骤面板包含您可以添加的所有步骤类型,分在十个文件夹中:导入;导出和归档;表;维度;分摊;AI、ML 和文本;空间;文档和报表;工作流和变量;以及外部系统。文件夹初始为关闭状态。单击某个文件夹可将其打开;少数文件夹包含子文件夹,例如“导入”下的 Sage 和“工作流和变量”下的通知。面板会记住您让哪些文件夹保持打开。
文件夹底纹和缩进参考线
Section titled “文件夹底纹和缩进参考线”面板会显示您在层次结构中的位置,无需您自己记忆:
- 文件夹按深度添加底纹,因此顶层文件夹、子文件夹及其中的步骤一眼就能区分。底纹只是辅助提示,文件夹图标和粗体标题已经标明这是一个文件夹。
- 每个打开的文件夹都会在其内容左侧绘制一条垂直缩进参考线,单击参考线会关闭它所属的文件夹。当一个很长的打开文件夹的标题已经滚出视野时,这是退出的快捷方式。将鼠标悬停在参考线上会显示 Collapse this folder。
- 文件夹使用与维度屏幕相同的 +/− 框来展开和折叠,因此这一操作在整个产品中的含义一致。
- 您正在浏览的文件夹的标题在滚动时会固定在列表顶部,因此鼠标指针下的步骤始终有所归属。在子文件夹内,其标题和父文件夹的标题都会固定。
- 展开或折叠文件夹时会保持您的滚动位置,而不是将您抛回列表顶部。
- 全部展开文件夹和全部折叠文件夹是面板标题中的两个小按钮,位于用于折叠面板本身的箭头旁边。
添加步骤有两种方式:
- 单击它。 该行会闪烁以确认已添加,步骤会出现在可见画布的左上角附近并处于选中状态,因此检查器会显示其详细信息。将其拖到您想要的位置。点错了?按 Delete 并确认;它仍处于选中状态,因此无需四处寻找。
- 从面板拖到画布上,它会落在您放下的位置。
另外还有两点值得了解:
- 筛选… 会按步骤名称搜索整个目录,无论文件夹是打开还是关闭。每个匹配项都列在其所属文件夹的标题下,因此无需打开任何内容即可知道某个步骤属于哪里。没有匹配项时,面板会显示没有匹配的步骤。
- 步骤旁边的星标会将其固定到收藏,这是位于文件夹上方的一个部分,不会归入任何文件夹内。右键单击步骤可使用相同的添加到收藏夹 / 从收藏夹中移除,以及添加到画布。
键盘导航和屏幕阅读器
Section titled “键盘导航和屏幕阅读器”面板可以完全通过键盘操作,并且可使用屏幕阅读器导航:它以树的形式公开,每一行都会报告它是否为文件夹、该文件夹是否已打开以及所处的层级深度。输入筛选条件后,结果将作为匹配项的平面列表公开。
按 Tab 键从筛选… 字段移入列表(整个列表算一个停靠点,而不是每个步骤一个),再按 Tab 键则离开并前往画布。在列表内:
| 按键 | 作用 |
|---|---|
| 向下 / 向上 | 移到下一行或上一行 |
| 向右 | 打开当前所在的文件夹;如果在步骤上,则向下移动 |
| 向左 | 关闭当前所在的文件夹;如果在步骤上,则跳到包含它的文件夹 |
| 回车或空格 | 将当前所在的步骤添加到画布,或打开和关闭文件夹 |
| Esc | 返回筛选… 字段 |
画布可以运行整个工作流或其中任何部分。由于执行遵循图的结构,“从此处”和“所选”会遵守依赖关系,而不是列表位置。
| 操作 | 运行内容 |
|---|---|
| 运行工作流 | 从起始步骤开始的整个工作流。 |
| 运行此步骤 | 仅所选步骤。 |
| 从此处运行 | 所选步骤以及通常会在其之后运行的所有下游步骤。 |
| 运行所选 | 仅所选步骤:它们并行触发,运行时按其依赖关系为它们排序。 |
| 运行区段 | 所选步骤,加上图中位于您所选内容中拓扑最早和最晚步骤之间的每个步骤。 |
工作流运行期间,您可以暂停(进行中的步骤会完成,新步骤等待,直到您恢复)、从暂停或停止的位置恢复工作流,或者停止(进行中的步骤会完成,排队的步骤会被取消)。恢复会重新运行失败的节点以及仍在等待它的所有节点,已完成的节点保持不变,请参阅暂停、停止和恢复。
模拟会遍历工作流的图而不运行实际的转换。步骤会像真实运行时一样依次着色,因此您可以在投入计算之前直观地查看顺序和分支。不会执行任何操作,也不会更改任何数据。
断点会在运行到某个步骤时暂停运行,以便您在工作流的其余部分继续之前检查上游输出。
- 右键单击步骤并选择设置断点(或选择清除断点将其移除)。
- 运行工作流。当执行到带有断点的步骤时,运行会在该处暂停;所有下游步骤都会等待。
- 在检查器中查看该步骤的输入和输出,然后恢复以继续。
断点会随工作流一起保存,因此您设置的断点会在各会话之间保留,直到您清除它。
容器将相关步骤分组到一个带标签的方框中,您可以将其作为一个整体进行折叠或禁用,这对于整理大型工作流或整体启用、关闭某个子流程很有用。
- 分组到容器:选择步骤,然后将它们分组并为容器命名。
- 折叠容器 / 展开容器:将容器折叠为单个磁贴以减少画布上的杂乱,或将其重新展开。
- 禁用容器 / 启用容器:禁用容器会一次性跳过其所有成员步骤。启用则恢复它们。
- 重命名容器…:更改其标签。
- 取消容器分组:移除容器;其成员步骤仍保留在画布上。
- 添加或移除步骤:在 Mac 上按住 Cmd,在 Windows 上按住 Ctrl,然后将步骤拖到容器上。容器会高亮显示为放置目标,松开后步骤即加入其中。按住 Cmd/Ctrl 将步骤从容器中拖到空白画布上可将其移除。放到折叠的容器上会将步骤添加到其中。
一个步骤最多属于一个容器,因此将其放到另一个容器上会移动它。拖动多个选中的步骤会将它们全部移动。如果您选中了整个容器并按住 Cmd/Ctrl 拖动其中一个步骤,则只会移动该步骤。没有任何步骤的普通容器会被移除。普通拖动只会在画布上移动步骤,Cmd/Ctrl+单击仍会切换选择,在画布之外松开则不会有任何更改。您可以像撤消和重做其他布局更改一样撤消和重做成员关系的更改;已锁定的工作流无法更改。
普通容器只是视觉上的分组:它能整理画布,但不会改变步骤的运行方式。将容器变为执行容器后,它还会成为执行的单元:整个分组作为一个密封的子工作流运行,在父图中表现为单个节点。
启用方式:右键单击容器并将执行切换为开启。容器会以独特的边框、标题中的执行徽章,以及一个入口端口和一个出口端口重新绘制,因此您可以一眼分辨执行容器与普通分组。将鼠标悬停在端口上可看到其入口端口和出口端口提示。
运行方式:密封的子 DAG。 将容器标记为执行容器后,其边界在两个方向上都是密封的:
- 容器的输入到达之前,内部不会有任何步骤启动。 每个成员步骤都会等待为该分组提供数据的内容,即使该成员自身没有任何上游。
- 在每个成员都完成之前,容器下游不会有任何步骤启动。 只有最后一个成员完成时,分组的出口才会释放,因此父工作流将整个容器视为一个节点。
容器内部的独立分支仍会并行运行,与它们在开放画布上的行为完全相同:密封只管辖分组的边界,而不管辖其内部工作的顺序。
将上游步骤连接到入口端口。 从上游步骤向容器拖动一条连接线,并将其放在入口端口上。这一条边就为整个分组提供数据:容器的输入到达后,每个需要该输入的成员都会获取它。
将出口端口连接到下游步骤。 从容器右侧边缘的出口端口拖动一条连接线,连接到使用该分组输出的下游步骤。下游步骤在每个成员都完成后启动,该连接线从容器的边缘绘制。
您也可以像连接任意两个步骤一样,从成员步骤向下游步骤绘制连接线。运行时会自动通过容器的出口端口为您路由该连接,因此两种方式的结果相同。
失败行为。 失败的成员遵循与任何其他步骤相同的错误处理:
- 在默认的出错时停止下,成员失败会终止运行,容器之后的所有内容都会被搁置。
- 在 出错时继续 下,失败的成员被视为已完成;待其余分支完成后,容器的出口仍会释放,下游工作继续进行。
禁用执行容器。 禁用执行容器会将其作为一个整体跳过:其成员不运行,并且由于被跳过的容器不产生输出,容器下游的所有内容也会被跳过,而不是针对不存在的输入运行。这与禁用普通(非执行)容器不同,后者只跳过成员步骤;不依赖这些成员的下游步骤仍会运行。重新启用容器即可恢复整个分组。
添加和移除步骤。 更改执行容器的步骤的方式与此相同,使用 Cmd/Ctrl+拖动。在以下情况下,PlaidCloud 会拒绝该移动、显示一条消息并将步骤恢复到原位:
- 该步骤连接到了容器自身的入口或出口端口,
- 该移动会通过容器的边界形成环,或
- 这会移除容器的最后一个步骤。请改用取消容器分组。
运行和监控执行容器
Section titled “运行和监控执行容器”执行容器也是可作为一个整体来运行和观察的对象。您可以只启动其工作,在运行时跟踪汇总状态,并直接跳转到其中的失败位置,在画布和运行监视器中均可如此。
运行组 / 运行组及下游。 右键单击执行容器,即可在不触及工作流其余部分的情况下运行它:
- 运行组运行容器的成员步骤。
- 运行组及下游运行成员以及容器的所有下游内容。
两者都不会重新运行为容器提供数据的上游步骤:它们按分组当前的状态运行,使用已有的输入。两者使用与单个步骤相同的运行所选机制,因此成员并行触发,运行时按其依赖关系为它们排序。
分组上的实时状态。 工作流运行时,容器会显示其成员的汇总状态:一个状态点、一个 N / M 完成计数和一个彩色边框。该状态反映成员的整体情况:任一成员失败则为错误,任一成员正在运行时为正在运行,所有成员都已结束时为完成,分组被跳过时为已跳过,依此类推。折叠的容器会在其单个磁贴上显示同样的汇总,因此把分组折叠起来并不会隐藏其工作进展。
跳转到失败位置。 当分组中有失败的成员时,单击其状态即可在画布上选中该成员并将其居中,无需在分组中四处寻找导致运行中止的原因。
从失败处重试。 右键单击失败的执行容器并选择从失败处重试,即可只重新运行失败的成员及其在分组内部的下游内容;已经成功的成员会被跳过。这与运行组不同,后者无论如何都会重新运行每个成员。在您修复了某个成员的故障之后,从失败处重试是恢复为绿色的更快途径。
上次运行时间。 容器标题会显示其成员上次运行耗时的总和,因此您无需自己累加各成员,就能一眼看出整个分组的开销。
端口提示。 将鼠标悬停在执行容器的入口端口或出口端口上,可在提示中看到穿过该边界的表,即分组引入的输入或移交给下游的输出。
执行容器可以针对一组值的每次迭代运行一次其密封的子 DAG,因此一个负责加载和转换某个区域数据的分组,可以依次处理每个区域,而无需为每个区域复制一遍步骤。右键单击执行容器并选择容器设置… ,然后进入迭代对象选项卡,勾选迭代此执行容器以启用迭代(该设置仅出现在执行容器上,因为迭代驱动的是作为一个整体运行的分组)。迭代是可选的:不勾选该复选框,容器就只运行一次,因此容器可以只带条件而不设置任何迭代。
配置循环。 容器设置… 对话框的迭代对象选项卡使用与循环运行工作流步骤相同的迭代模型,分布在各选项卡子页面上。选择迭代集的构建方式:
-
Specify Variable Values to Iterate Over:在手动值迭代选项卡上自行定义值。添加一个或多个循环变量,并为每个变量提供明确的值列表或范围:
范围类型 每个…迭代一次 整数 从开始、结束和步长得出的数字 大写字母 / 小写字母 范围内的字母( A–Z或a–z)范围可以带有要跳过的排除值列表。当您定义多个变量时,容器会针对它们的值的每种组合(笛卡尔积)各运行一次。
-
Use Combination of Unique Values in Table:在迭代对象选项卡上选择一个源表,然后在 Data to Variable Mapping 选项卡上将其一个或多个列映射到循环变量名称。容器会针对这些列的值的每种唯一组合各运行一次。使用表数据筛选器选项卡可限制要考虑的行。
容器内的步骤可以像引用任何工作流变量一样引用每个循环变量({region}),因此成员的 SQL、表达式、表名和文件路径都可以随迭代而变化。您还可以选择开启 Combine all iterations’ output,以累积每一轮的结果,而不是只保留最后一轮;其现状请参阅下面的说明。
运行方式。 迭代是串行运行的,一轮接着一轮:成员共享循环变量,因此两轮同时进行会相互读取对方的值。每次迭代都将循环变量绑定到下一个值(或组合),然后将整个分组作为普通的执行容器运行来运行;只有上一次迭代完成后,下一次迭代才会开始。一个容器最多限制为 1,000 次迭代。
下游读取的内容。 由于每一轮都会覆盖分组的输出表,容器下游的步骤读取的是最后一次迭代的输出。如果需要每次迭代的所有行,请开启 Combine all iterations’ output,使各轮累积而不是替换。
例如,要为每个区域生成一个筛选后的提取结果,可添加循环变量 region,值列表为 East, West,并为某个成员步骤指定读取该变量的筛选条件:
SELECT * FROM sales WHERE region = '{region}'容器会运行两次:先是 region = 'East',然后是 region = 'West',每次都运行整个密封分组。
执行容器还可以携带条件,用于控制整个容器是否运行。这些条件与步骤的条件使用相同的变量、表、文档和时间检查,因此两者的工作方式相同。右键单击容器,选择容器设置… ,然后打开条件选项卡(它是第一个选项卡,也是步骤条件所在的位置):它与步骤使用的条件界面完全相同。条件不需要迭代,因此容器可以只携带条件,而让迭代此执行容器保持关闭。
仅在入口处评估一次。 容器的条件只在图中到达该容器时检查一次,不是对每个成员检查一次;对于迭代容器,也不是每次迭代检查一次。如果条件通过,则每个成员步骤照常运行。如果条件未通过,则没有任何成员运行;容器不产生输出,因此其下游的所有内容也会被跳过,与禁用的容器相同。
仅限跳过,没有“转到”。 步骤未通过的条件可以让运行转到指定名称的步骤,而不是仅仅继续往下走;容器的条件则不行。步骤提供的“转到步骤”选择器对容器是隐藏的,因此容器条件未通过始终意味着跳过该容器及其下游的所有内容,没有可供选择的其他落点。
组合方式:
- 禁用优先。 已禁用的容器无论其条件如何都会被跳过:禁用是更强的无条件跳过,根本不会评估条件。
- 迭代受条件控制,而不是循环。 既迭代又带有条件的容器会在第一次迭代之前检查一次条件,以决定循环是否运行。条件未通过会跳过每一次迭代,而不仅仅是第一次;条件通过后,不会在各轮之间重新检查。
- 恢复会保留该决定。 恢复一个以这种方式跳过了容器的运行时,不会重新评估条件,容器保持被跳过的状态,就像暂停之前已完成的任何其他决定一样。
- 损坏的条件会导致运行失败。 评估条件时出错(例如检查配置有误)会使运行失败并报告该错误。它与条件未通过的处理方式不同,因此不会悄悄跳过容器。
停靠的步骤检查器显示您所选步骤的全部信息:
- 输入和输出:流入和流出该步骤的数据。输入或输出卡片上的眼睛图标会打开数据预览抽屉,快速查看该表的前几行。
- 运行统计:该步骤的上次运行结果、上次耗时、运行次数以及耗时汇总(包括平均值和 p95 耗时),如有上次运行错误或上次运行警告,也会一并显示。
- 编辑步骤配置… 和编辑步骤详细信息…:直接跳转到该步骤的表单,并可通过单击名称内联重命名该步骤。
- 回滚步骤配置(闪回):将步骤的配置恢复到之前保存的版本。
- 查看运行历史:打开此步骤的完整运行历史记录。
选择单个步骤即可检查它;选择多个步骤时,检查器会将您引导到画布工具栏中的批量操作。
检查器可调整大小(拖动它与画布之间的分隔条),也可折叠:步骤名称旁边的箭头(或 ] 键)会将其折叠为一条窄栏,沿侧边继续显示所选步骤的名称,这样您可以把宽度还给画布,同时不会忘记所选的是哪个步骤。单击栏上的任意位置即可再次打开。请参阅折叠和调整面板与检查器窗格的大小。
选择查看此工作流的运行历史可查看过去的运行及汇总统计信息。画布还会根据最近的运行记录绘制热图,使经常失败或运行缓慢的步骤一目了然。
单击工具栏中的查看日志,可直接跳转到项目的日志视图,并已针对此工作流筛选,这就是您原本需要从项目区域进入的完整运行日志。请参阅查看工作流日志。
画布无法打开工作流时
Section titled “画布无法打开工作流时”即使工作流已保存的布局有一部分无法读取,画布也会打开该工作流。
- 没有已保存位置或大小的容器(例如通过 API 或 MCP 创建的容器)会打开,并围绕其成员步骤绘制。
- 其他无法读取的布局项:工作流仍会打开,并且布局部分不可读通知会列出被重置或隐藏的内容:最多三项,其后显示 …and N more。被隐藏的注释会在您下次保存布局时被移除。
- 无法加载的工作流:会通过无法加载工作流消息给出原因,而不是显示空白画布。请关闭画布并重新打开该工作流。
- 标准工作流:画布会显示可视化画布不可用 — 此工作流不是高级工作流。请使用“转换为高级…”启用可视化画布。 请在该工作流上选择转换为高级… 以启用。请参阅标准与高级。