任务流 (Task Flow)
任务流 (Task Flow) 是 TiDB Cloud Lake 内置的工作流编排功能。它允许你将基于 SQL 的数据流水线定义、调度和监控为有向无环图 (DAG)。图中的每个节点都是一个 Task——一条具有自身调度、依赖关系和执行设置的 SQL 语句。Flow 将多个任务组合在一起,并自动管理它们的执行顺序。
概述
Task Flow 用更强大的模型替代了旧版的 Task List:
核心概念
Task
Task 是最小的工作单元。它包含:
- 一条要执行的 SQL 语句
- 调度方式(手动、间隔或 cron)
- 对其他任务或 stream 的可选依赖关系
- 高级设置(失败阈值、查询结果缓存、最小执行间隔)
Flow
Flow 是一组具有依赖关系的命名任务集合。TiDB Cloud Lake 会根据 DAG 结构自动确定执行顺序。一个 flow 包含:
- 名称和分配的计算集群 (Warehouse)
- 一个或多个已定义依赖关系的任务
- 生命周期:Created → Started → Suspended → Resumed → Dropped
DAG (Directed Acyclic Graph)
任务之间的依赖图。如果 Task B 依赖于 Task A,TiDB Cloud Lake 会先运行 Task A,并且只有在 Task A 成功后才会触发 Task B。不允许存在循环依赖。
快速开始
创建任务流
- 在左侧边栏中,导航到 Data > Task & Flows。
- 点击右上角的 Create。
- 在 flow 弹窗中:
- 输入 Flow Name。
- 选择用于运行任务的 Warehouse。
- 点击 Add Task to Flow 添加第一个任务。
配置任务
在任务表单中,填写以下内容:
Basic Settings
Dependencies
Advanced Options
- 点击 Save 将任务添加到 flow 中。
- 重复上述步骤以添加更多任务。使用 Require Tasks 定义它们之间的依赖关系。
- 点击 Publish 创建 flow。
可视化 Flow
创建 flow 后,点击其名称以打开详情页。Latest Run 标签页会显示 DAG 可视化图。
每个节点会显示:
- 任务名称
- 最近一次执行状态(用颜色区分)
- 执行时间范围
- 错误信息(如果失败)
状态颜色:
管理 Flows
Flow 操作
在 Task & Flows 列表中,每一行都有一个操作菜单,包含:
批量操作
使用复选框选择多个 flow,然后使用批量操作菜单来:
- 暂停所有选中的 flow
- 恢复所有选中的 flow
- 删除所有选中的 flow
监控执行情况
运行历史
在详情页点击 Runs History 以查看所有历史执行:
失败或已取消的运行会显示错误提示。你可以点击错误查看详情或创建支持工单。
全局任务历史
导航到 Data → Task History,查看组织中所有 flow 的执行情况。你可以按以下条件筛选:
- 任务名称(多选)
- 时间范围(最近 2 天、最近 3 天)
版本控制
每次你发布对 flow 的更改时,TiDB Cloud Lake 都会保存一个新版本。要访问版本历史:
- 打开 flow 详情页。
- 点击 Versions History 标签页。
比较版本
- 使用复选框选择两个版本。
- 点击 Compare。
- 系统会打开一个并排的 SQL diff 抽屉,显示这两个版本之间的变更内容。
回退到先前版本
- 从列表中选择一个版本。
- 点击 Revert。
- 在对话框中确认该操作。
flow 会恢复到所选版本,并创建一个新的版本记录。
调度参考
调度类型
Manual:任务仅在通过 Execute Once 触发时运行。不会自动调度。
Interval:每 N 分钟/小时运行一次。示例:EVERY 5 MINUTE。
Cron:带时区支持的标准 cron 表达式。示例:0 9 * * 1-5(工作日上午 9 点)。
基于 Stream 的触发器
如果任务具有 Require Stream 依赖关系,则只有在指定 stream 存在未消费数据时才会执行。这对于构建响应表变更(CDC)的事件驱动型流水线非常有用。
最佳实践
- 从简单开始:先创建一个单任务流,以便在添加依赖关系之前验证 SQL。
- 对 CDC 管道使用 stream:将 stream 触发器与
MERGE INTO语句结合使用,以构建增量数据管道。 - 设置失败阈值:使用 Suspend Task After Num Failures,防止失控重试消耗计算集群额度。
- 启用结果缓存:对于重复查询相同数据的任务,启用 Query Result Cache 以降低计算成本。
- 使用版本历史:在进行重大更改之前,记下当前版本号,以便在需要时回退。
- 按工作负载分离计算集群:将较重的转换任务分配到更大的计算集群,将轻量任务分配到较小的计算集群。