Data Engineering Agent 任务开发指南
本文介绍如何使用 Data Engineering Agent 创建 Studio 任务草稿,并在发布前检查任务内容。任务开发是 Data Engineering Agent 最常用的场景之一,适合 SQL 开发、数据清洗、指标汇总、数仓分层和临时工程任务沉淀。
适用场景
你可以让 Data Engineering Agent 帮助完成以下任务:
- 根据自然语言生成 SQL 任务草稿
- 根据已有表结构设计清洗或汇总逻辑
- 创建 SQL 任务草稿,并辅助生成 Python / Shell / Flow / JDBC 等任务内容
- 为任务写入代码、参数和说明
- 检查任务是否已保存、是否调度、是否发布
- 在发布前解释任务运行后会产生什么影响
如果只是临时看一个结果,可以先让 Agent 执行只读查询。如果这个逻辑需要反复运行、沉淀为数据产出或接入调度,再让 Agent 创建 Studio 任务。
先探索,再创建任务
任务开发并不一定适合一开始就直接要求 Agent 创建任务。
更自然的使用方式通常是:
- 先探索当前有哪些表、目录和现有任务
- 再判断这次更适合临时查询、SQL 草稿、Python 任务还是组合任务
- 对象和目标明确后,再真正创建任务
更适合先探索的场景通常包括:
- 还不知道该把任务放到哪个目录
- 不确定现有目录里是否已有可复用任务
- 不确定这次更适合 SQL、Python、Shell 还是 Flow
- 不确定当前需求是否值得直接沉淀为任务
这类问题更适合这样起手:
- 帮我看看当前有哪些目录适合放这个任务。
- 帮我看看当前目录里有没有现成任务可以复用。
- 帮我判断这个需求更适合 SQL 任务还是 Python 任务。
当目录、任务类型和目标已经明确后,再进入创建会更稳。
推荐工作流
先说明目标和边界
创建任务前,建议明确告诉 Agent:
- 要创建什么类型的任务
- 任务要放在哪个 Studio 任务目录
- 使用哪些源表
- 产出什么结果
- 是只创建草稿,还是允许执行、建表、发布
- 是否需要先请求确认
示例:
如果是团队协作或生产项目,应同时指定任务目录:
如果这些信息还没有完全明确,也可以先问:
允许 Agent 做只读探查
为了生成更准确的任务,Agent 通常会先查看表结构、样例数据或已有任务配置。这类只读探查不会改变环境,是任务生成质量的重要前提。
如果你已经知道字段含义,也可以直接在问题中补充字段说明,减少 Agent 误选字段的概率。
这一步本质上就是任务创建前的探索阶段。对于陌生表、陌生目录和现有任务较多的项目,通常值得先做。
先创建草稿任务
对于生产任务,建议先创建草稿。草稿任务会出现在 Studio IDE 的任务树中,但不会自动运行,也不会自动进入调度。创建时应指定任务目录,并在创建后检查任务是否落在正确目录。
Agent 创建草稿后,通常会返回:
- 任务 ID
- 任务名称
- 任务路径或所在文件夹
- 是否已发布或调度
- 是否执行过 SQL
- 是否创建或修改了目标表
如果创建的是组合任务或 Flow 类对象,创建成功后不能只看任务是否出现在任务树中,还应继续检查画布中的节点和依赖是否真正落下。
在 IDE 中检查代码
创建草稿后,应在 IDE 中打开任务,重点检查:
- 任务是否创建在正确目录下
- SQL 是否引用了正确的 catalog、schema 和表
- 字段含义是否正确,是否存在同名或相似字段误用
- 过滤条件、时间范围、分组维度是否符合业务口径
- SQL 是只读查询,还是
、CREATE TABLE AS SELECT
、INSERT INTO
等写入逻辑INSERT OVERWRITE - 目标表是否符合命名规范和分层规范
- 是否需要补充分区字段、清洗时间、来源标记等字段
草稿本身不会创建目标表,但如果 SQL 是建表或写入型 SQL,用户后续点击运行后会真正执行对应操作。
如果任务是组合任务、Flow 或多节点任务,还应额外检查:
- 画布中是否真的出现了预期节点
- 节点名称是否对应预期任务
- 依赖边是否已经连上
- DAG 是否为空
- 节点内容是否真的写入到了对应节点,而不是只创建了独立 SQL 任务
这一步不能只依赖 Agent 的口头说明。应以 Studio 画布和任务树中的实际对象为准。
组合任务与任务组
组合任务和任务组相关操作,建议单独看待,不要把它们和普通 SQL 草稿任务混为一类。
实际入口位于 Studio 新建菜单:
组合任务新建弹窗中,至少会出现以下字段:
任务名称文件夹任务组
其中
任务组 字段默认可能是 否。当切换为 是 时,界面会额外出现 请选择任务组 字段。这说明:
- 创建组合任务本身
- 把对象作为任务组处理
- 把任务加入已有任务组
这三件事不是同一个动作。
如果你希望 Agent 帮助创建组合任务,建议提问时把预期说清楚:
- 是要新建一个组合任务容器
- 还是要把一个普通任务加入已有任务组
- 还是要在组合任务画布中新增节点并绑定依赖
推荐提问:
如果组合任务里包含节点,还应继续追问:
再决定是否运行或发布
确认代码无误后,再决定下一步:
- 临时验证:运行只读
SELECT - 建表验证:运行
CREATE TABLE AS SELECT - 周期产出:配置调度、依赖、重试、超时后发布
- 生产上线:补充数据质量检查、上线检查和运行监控
典型任务草稿场景
创建单个 SQL 汇总任务草稿
用户可以要求 Agent 根据源表创建一个未调度的 SQL 草稿任务。例如,按日期和商品统计最近 7 天销售情况。
Agent 会先说明要创建的任务,再请求确认。确认后,它会在 IDE 中创建任务并写入 SQL 内容。任务状态为未调度,用户可以在 IDE 中打开检查。实际使用时,应要求 Agent 同时返回任务目录,便于确认任务没有创建到默认目录或错误目录。
创建 Silver / Gold 分层任务草稿
用户可以要求 Agent 基于一个源表生成简单的数据管道草稿。例如:
- Silver 层:从原始表读取,做字段标准化和基础清洗
- Gold 层:从 Silver 表读取,按日期和商品汇总订单数、销售额和客单价
在这种场景中,Agent 可以创建两个 SQL 草稿任务:
- Silver 清洗任务:使用
标准化商品名,过滤异常金额、空日期和空商品名,并增加清洗时间字段TRIM(product_name) - Gold 汇总任务:从 Silver 表读取,按
和sale_date
汇总最近 7 天销售额、订单数和客单价product_name
这说明 Data Engineering Agent 可以完成"理解源表 -> 设计分层方案 -> 创建多任务草稿 -> 写入 IDE"的任务开发流程。
草稿、运行、发布的区别
| 阶段 | 含义 | 是否改变数据 | 是否进入调度 |
|---|---|---|---|
| 草稿 | 在 IDE 中创建任务并写入代码 | 不会自动改变数据 | 不会 |
| 运行 | 用户或 Agent 执行任务代码 | 取决于 SQL 类型,查询不写入,建表/插入会改变数据 | 不一定 |
| 发布 | 将任务发布到调度系统 | 不一定立即改变数据,但会按调度周期运行 | 会 |
使用 Agent 创建任务时,建议明确说出想停留在哪个阶段。
任务目录规范
创建 Studio 任务时,应明确指定任务目录。任务目录不是可有可无的附加信息,而是任务治理、协作和后续运维的基础。
Studio 任务树支持目录管理,用户可以根据项目、业务域、环境或生命周期新建目录,并对目录进行重命名、移动和删除。通过 Data Engineering Agent 创建任务时,应明确指定目标目录;如果目录尚未创建,建议先在 Studio 中完成目录创建,再让 Agent 创建任务草稿。
为避免目录结构失控,不建议在创建任务时临时决定目录名称,也不建议让任务自动落到默认目录。团队应先确认目录规划,再创建任务。
建议按以下方式组织任务目录:
| 组织方式 | 适用场景 | 示例 |
|---|---|---|
| 按业务域 | 多部门共用一个工作空间 | 、 |
| 按项目 | 项目制开发或专项交付 | |
| 按分层 | 数仓分层任务较多 | 、、、 |
| 按环境 | 测试和生产共存 | 、 |
| 按生命周期 | 临时任务需要定期清理 | |
创建任务前,建议让 Agent 先确认:
- 目标任务目录是否明确且已经存在
- 目录是否已经存在
- 是否允许在该目录下创建任务
- 是否需要创建多个任务并放在同一个目录
- 测试任务是否放入可清理目录
推荐提问:
不建议的提问:
这个提问没有说明任务目录,Agent 可能会选择当前目录、默认目录或最近使用的目录,后续查找和清理都会变困难。
常见风险
只想看逻辑,却生成了建表 SQL
如果用户要求"生成数据管道"或"写入目标表",Agent 可能生成
CREATE TABLE AS SELECT 或 INSERT SQL。这是合理的工程代码,但运行后会创建或写入表。
如果你只想检查逻辑,可以要求:
字段含义不清导致误选字段
当一个表或多个表中存在相似字段时,Agent 可能误选字段。建议在提问中补充字段含义,或要求 Agent 先展示字段选择依据。
示例:
多任务链路需要检查上下游
如果 Agent 创建多个任务,例如 Silver 和 Gold,必须检查这些任务是否位于同一项目目录或清晰的分层目录下,并检查 Gold 是否引用了正确的 Silver 输出表。发布前还要配置依赖关系,避免 Gold 先于 Silver 运行。
