DataWorks Data Agent 是你在 DataWorks 里的 AI 数据伙伴——它能读懂你的库表与血缘、写和调 SQL、建表与配置数据同步、排查节点产出、补数据、做质量校验。

本指南面向已经上手、想把它用得更顺的数据工程同学。它不重复罗列功能,而是告诉你怎么提问、怎么协作,才能又快又准地拿到结果。读完你会建立一套稳定的使用习惯,遇到指南没覆盖的新场景也能自己判断。

文中约定:首次之后将 DataWorks Data Agent 简称Data Agent;用「库.表」指代形如project.table_name的 MaxCompute 表名。
DataWorks Data Agent 体验地址:
https://dataworks.data.aliyun.com/product/agent

三个核心原则

后面所有场景都建立在这三条之上。记住它们,你已经赢了一半。

1. 一个会话,一个任务

让每段对话聚焦在一件可以收尾的事情上。任务完成了,或者你想换个方向,就新开一个会话重新描述,而不是在原对话里不断追加新需求。

为什么:Data Agent 在一次会话里会持续追踪你的目标、已查过的表、已下的结论。当一个会话里堆进越来越多互不相关的需求时,这些上下文会互相干扰,回答质量随之下降。短而聚焦的会话,能让它始终在「最清醒」的状态下工作。

2. 给精确的锚点

凡是涉及具体对象,直接给可定位的标识:库.表名、字段名、分区、调度节点 ID、工作空间名。避免「那张表」「那个节点」这类模糊指代。

为什么:Data Agent 的第一步通常是去查代码、查血缘、跑样例。精确标识让它立刻动手;模糊指代只会逼它反问或猜测,多花一轮还可能猜错。

3. 先备好前提

开始干活前,先确认要操作的库.表你有权限,并告诉 Data Agent 当前工作空间。需要切换项目空间时主动说明。

为什么:权限和空间是最常见的「中途断点」。在任务进行到一半才发现没权限,会打断 Data Agent 已经展开的思路,往往要重来。开局扫清前提,全程更顺。

通用提问模板

把一次请求拆成四部分,Data Agent 几乎总能一次接住。不必拘泥格式,关键是这四类信息都到位:

【目标】我想得到什么结果
【对象】涉及哪些库.表 / 节点 / 分区(给全名)
【约束】时间范围、过滤条件、数据口径
【产出】要 SQL / 要一张表 / 要一份文档 / 要建好的任务

示例

【目标】统计每个工单的平均处理时长
【对象】demo_dw.dwd_work_order_event_di,用create_timefinish_time 两个字段
【约束】时间限制在过去三年,状态码含义:30=处理完成(其余视为未完成)
【产出】给我可直接运行的 ODPS SQL

对比一句「帮我算下工单处理时长」——后者会让 Data Agent 连用哪张表都得反问,前者一轮就能给出可用的 SQL。

上文及下文示例中的表名、字段、节点 ID 均为便于说明而虚构,请替换为你自己的真实对象。

场景一:写和调 ODPS SQL

最高频的场景。无论是从零写,还是排查一段跑不对的 SQL,目标都是快速定位到正确逻辑

✅ 推荐做法

  • 一次给齐:要算什么 + 用哪张库.表的哪些字段 + 过滤/时间约束

  • 复杂查询分步搭:先让它把核心一段跑通,确认结果对,再往上叠逻辑。一边写一边验证,比一次性写一大段再排错快得多。

  • 报错时贴完整错误原文,包含错误码与行列号。

可套用模板

帮我写一段 ODPS SQL:
从 <库.表> 取 <字段A、字段B>,
按 <维度> 聚合,统计 <指标>,
分区取 <最新分区 / 指定 ds>,过滤条件 <…>。
先跑通核心逻辑给我看,确认后再加 <下一步需求>。

完整对话示例(推荐)

:看下节点300000001 的代码。我在 demo_ads.order_item_detail_di 能查到数据,但产出结果里没有,coupon_codes 不为空且用 , 分隔。
:(看完 Data Agent 的分析后)但用 left join 的话只会关联不到数据,不会让订单整行丢失吧,左表还在。
:那给我一个查order_item_detail_di 的 SQL,把 coupon_codes 拆成多行,分区取最新。

每一轮都带着具体表名/字段,且是对上一轮结果的精确纠偏——这正是高效 SQL 调试的样子。

❌ 尽量避免

  • 开局只问「这个 SQL 怎么写」,不给表结构和样例。

  • 把一大段 SQL 加一大段 JSON 报文直接贴上、不说要干嘛。

  • 在同一会话里从「时间函数怎么写」一路漂移到建报表、改字段含义、算修复率——主题一换,就该换会话。

💡 为什么

SQL 调试的本质是定位差异:Data Agent 要么读代码、要么看血缘、要么跑样例对比,这三件事都需要精确的库.表/字段/分区作为入口。你给的锚点越准,它越早能动手。分步验证则让错误每次只出现在一小段里,远比一次性写完再大海捞针高效。

场景二:排查「数据为什么不对 / 节点为什么没产出」

血缘溯源与产出排查。目标是顺着数据链路找到出问题的那一环。

✅ 推荐做法

  • 先锁定具体节点:给调度节点 ID 或库.表名 + 工作空间。

  • 把「现象」和「预期」分开讲清:哪个字段、在哪个分区、实际是什么、你认为应该是什么

  • 需要跨空间排查时,主动说明目标空间名,或请它给出切换空间的入口。

可套用模板

在 <工作空间> 里,节点 <节点ID> 产出的 <库.表>,
<字段X> 在 <分区ds> 实际是 <现象>,
但我预期是 <预期>。
帮我顺着血缘往上排查原因。

❌ 尽量避免

  • 「这个字段为什么是空的」——不说哪张表、哪个分区、哪个节点。

  • 让它「自己往上钻、自己溯源」却不给起点表。

  • 排查到一半才发现没权限、或表是 view 查得慢——这些应在开局交代。

💡 为什么

排查是顺着数据血缘逐级回溯的过程,必须有一个确定的起点(节点或表)。给了起点,Data Agent 能调血缘、查上游、对样例;缺了起点,它只能反问。把「现象 vs 预期」一次说清,等于直接递给它一个可验证的假设,它能立即动手,而不是先猜你想要什么。

场景三:建表与数据同步

数据集成(DI)类任务,比如把 MySQL/DMS 表同步到 MaxCompute。

✅ 推荐做法

  • 一次说清四要素:源(数据源 / DMS 表)、目标(MaxCompute 库.表)、同步类型(全量 / 增量、一次性 / 周期调度)、调度时间。

  • 拿不准类型,就先让 Data Agent 帮你判断:「我这种场景该选什么任务类型?」定型之后再给表结构。

可套用模板

创建一个 <源类型> 同步到 <目标类型> 的 <单表/整库><离线/实时> 任务:
源表 <数据源.表>,目标 <库.表>,
同步方式 <全量 / 增量(按 gmt_modified)>,
调度 <一次性 / 每天X点 / 每周一X点>。

完整对话示例(推荐)

:创建一个 MySQL 同步到 MaxCompute 的单表离线任务,DMS 源表在demo_trade.item_sku_relation
:(Data Agent 确认好任务类型后)继续创建同步任务。
:(贴上建表 DDL)id BIGINT NOT NULL COMMENT '主键ID',shop_id BIGINT COMMENT '门店ID',…

源表、目标、同步类型一次说清,三轮干净收尾。

❌ 尽量避免

  • 不说是增量还是全量、是否周期调度——建完才发现类型不对要返工。

  • 建表 DDL、字段、分库分表键挤牙膏式一点点给。

💡 为什么

同步任务的「类型」决定了底层完全不同的配置:增量靠 gmt_modified 抽取、全量整表覆盖、周期任务还要配调度。类型一旦选错,后面所有配置都白做。所以先把类型敲定,再在正确的骨架上填表结构。

场景四:批量梳理与产出文档 / 报表

「把某目录下所有脚本梳理成分析文档」「做一个数据看板」这类大活儿。它们价值高,但也最考验协作方式。

✅ 推荐做法

  • 化整为零:先让它梳理一个子目录、产出一份小文档,验收通过,再做下一个。不要一句话就让它「整体梳理上百个节点」。

  • 明确产出形态:要不要有向无环图、要不要目录导航、风险点放在哪——一次列清。

  • 报表 / HTML 产出后,用 Data Agent 给的新文件路径打开。

可套用模板

我要梳理 <空间/目录> 下的脚本,分批做。
这一批先处理 <子目录A>:
1) 把每个脚本的作用整理成 Markdown;
2) 画出节点依赖的有向无环图;
3) 风险点与改进建议单列一节放最后。
做完这批我验收,再继续下一批。

❌ 尽量避免

  • 一句话让它「整体梳理」一个上百节点的大目录,期待一次成型。

  • 报告看着「没更新」就反复要求换链接——多数情况是浏览器缓存了旧文件,强刷新或换文件名即可。

💡 为什么

大型梳理任务里,节点越多,Data Agent 越要同时兼顾全局结构和每处细节。分批 = 让每一批都在它能完整掌控的范围内完成,质量更稳、也更容易验收。而「报告没更新」几乎总是缓存问题,认准这一点就不必在它身上绕圈。

场景五:让 Data Agent 执行运维动作

Data Agent 不只是会聊——它能真正帮你建节点、跑补数据、做质量校验、提交发布。用好它的执行能力,能省下大量手工操作。

✅ 推荐做法

  • 动作和对象说全:补哪张表、哪些分区、用什么调度配置。

  • 涉及发布、补数据这类有副作用的操作,让它先出方案、你确认后再执行

  • 不确定它的能力边界时,开场可以直接问「你能帮我做哪些事 / 我当前有哪些任务」快速对齐——这是高效的起手式。

可套用模板

帮我给 <库.表> 的 <分区范围,如 ds=20260501~20260507> 创建补数据任务,
调度配置参考 <现有节点/说明>。
先把执行方案给我看,我确认后再跑。

❌ 尽量避免

  • 只回「确认」「继续」却没说清确认的是哪个方案——在多轮会话里容易让它执行你没料到的动作。

  • 把随手试探(hitest、「你能干啥」)当正式任务下达——正式干活请直接给出完整需求。

💡 为什么

执行型动作有真实副作用:补数据会占用资源、发布会真的上线。「先方案、后执行」给你一个可否决的检查点。当你确认时,把确认的对象说全(「确认执行刚才那份补数据方案」),比单独一个「确认」更安全,也避免多轮对话里的指代歧义。

进阶技巧

  • 逐步纠偏胜过推倒重来。结果有偏差时,指出具体哪里不对(「left join 应该用 inner」「分区应取前一天」),而不是笼统说「不对,重写」。精确反馈让 Data Agent 在已有进展上修正,省去重复劳动。

  • 任务卡住时,补信息或重开,别催问。如果感觉进展停滞,与其反复问「好了吗 / 怎么还没动」,不如补充它可能缺的信息(一个权限、一张表、一个口径),或新开会话用更清晰的描述重述。

  • 善用计划确认。对复杂或高风险任务,让它先给出步骤计划,你确认后再执行——既看得到它的思路,也留了一道闸。

  • 跨空间要明示。一旦涉及多个项目空间,每次都说清当前在哪个空间操作,避免它在错误的空间里查询。

常见问题排查

现象 多半是 怎么办
任务中途报「无权限」 没提前开通库.表权限 先申请权限,再让它继续;下次开局就备好
它反复反问、进展慢 缺少可定位的锚点 补上库.表名 / 节点 ID / 分区 / 工作空间
同步任务建出来不对 同步类型选错 重新确认全量/增量、一次性/周期,再建
多轮后答非所问 一个会话塞了太多任务 新开会话,单独描述当前这件事
SQL 一直跑不对 报错信息没给全 贴完整 ODPS-xxxx 错误码与行列号

一分钟速查清单

开始任何任务前,对照这张卡片:

  • 这个会话只聚焦一件能收尾的事

  • 涉及的库.表 / 节点 / 分区都给了全名

  • 要操作的对象,权限和工作空间都备好了?

  • 报错的话,贴了完整原文

  • 复杂任务,是否分了步 / 分了批,而不是一口吃成?

  • 有副作用的动作,是否让它先出方案再执行

把这六条变成习惯,你和 DataWorks Data Agent 的每次协作都会又稳又快。

立即体验 DataWorks Data Agent,开启您的智能数据之旅!

DataWorks Data Agent 详情页https://www.aliyun.com/product/dataworks/dataagent

DataWorks Data Agent 官方文档 https://help.aliyun.com/zh/dataworks/user-guide/new-data-agent

DataWorks Data Agent 产品入口 https://dataworks.data.aliyun.com/product/agent

更多推荐