DataWorks 数据资产治理插件是一款内嵌在 Data Studio 中的 AI 驱动工具,可在编码时实时发现并修复代码问题,提升代码质量和数据安全。
功能概述
数据开发问题诊断功能集成了两大核心能力:实时语法诊断(LSP)和研发健康检查,旨在从不同维度保障您的代码质量。
能力 | 实时语法诊断(LSP) | 研发健康检查 |
核心职责 | 实时语法检查、代码静态分析。 | 基于规则库的数据规范、安全、性能问题检查。 |
触发时机 | 编辑代码时实时触发。 |
|
解决问题 | SQL 语法错误、函数使用错误等。 | 除内置规则库(分区使用不当、跨项目写入、JOIN 字段类型不一致等。)之外,还支持基于DataWorks Copilot能力的自定义规则库。 |
修复方式 | DataWorks Copilot 辅助修复。 | 可通过AI进行智能化修复建议和一键修复。 |
若代码存在语法错误,则仅会触发实时语法诊断(LSP)。针对数据开发的研发健康检查,当规则检查对象为代码时,只有在语法完全正确的情况下,方能触发健康检验。
检查项不通过不影响代码的执行运行。
地域限制
深度检查仅支持华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、西南1(成都)、中国(香港)、新加坡。
除深度检查之外的功能,仅支持华东1(杭州)、华东2(上海)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、华南1(深圳)、西南1(成都)、中国香港、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达)、德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)。
快速入门
通过以下步骤,您可以在 5 分钟内体验代码问题诊断与修复的核心流程。
启用质量检查功能
进入 DataWorks Data Studio,单击左侧导航栏底部的,进入设置页面的用户页签,确保
Data Governance下的DataStudio Governance Check Module Enablement和LspSetting下的SyntaxErrorEnable均已勾选(默认启用)。说明DataStudio Governance Check Module Enablement 控制数据治理插件的检查功能,而 SyntaxErrorEnable 控制实时语法诊断功能。两者分别负责不同层面的代码质量检查,需要同时启用才能获得完整的问题诊断能力。
编写示例问题代码
创建一个 MaxCompute ODPS SQL 节点,将以下包含错误的示例代码粘贴至编辑器中。
-- 示例:在SQL创建表 CREATE TABLE IF NOT EXISTS my_partitioned_table ( id STRING, name STRING, value BIGINT ) PARTITIONED BY (ds STRING) LIFECYCLE 365; -- 示例:语法错误 SELEC name FROM my_partitioned_table;发现LSP语法问题
此时,系统LSP实时触发检测,发现代码
SELEC出现红色波浪线,提示语法错误。点击页面左下角的
图标,在弹出的问题区域查看节点存在的代码问题异常。
修复LSP语法问题
将鼠标悬停在有红色波浪线的
SELEC上,单击出现的灯泡图标,使用 DataWorks Copilot 即可快速修复为SELECT。

发现治理项语法问题
点击保存后,编辑器根据数据资产治理插件开启的检查项检测代码问题。此处,命中两条研发健康检查的内置规则:
不允许create table以及分区表查询必须带分区。若问题面板不自动限制,单击页面左下角的
图标,弹出问题区域。
修复治理项语法问题
可通过鼠标移至my_partitioned_table处,点击快速修复;或者点击问题区域的超链接,等待修复建议后,验证符合优化要求后,可选择应用建议。

此处,通过快速修复方式,修复第二句SQL语句。

发起单文件深度检查
完成问题修复之后,可进行单节点代码的深度检查。例如,上述问题仅修复
分区表查询必须带分区后,点击上方的深度检查,编辑器将从文件深入检查并展示未解决的禁止在任务中创建表问题。
核心功能详解
开启配置项
根据个人习惯,对问题诊断功能进行精细化配置。所有配置项仅对当前登录账号生效。
进入 DataWorks工作空间列表页,选择目标工作空间,单击 操作 列的 快速进入 > Data Studio。
单击左侧导航栏底部,进入设置页面的用户页签。
配置项路径 | 配置项名称 | 中文说明 | 可选值 | 默认值 | 影响说明 |
Data Studio |
| 启用数据治理插件 |
|
| 控制是否在保存节点时进行数据规范、安全、性能等问题的检查。 |
LspSetting |
| 启用实时语法诊断 |
|
| 控制是否在编辑代码时实时显示语法错误。 |
LspSetting |
| 语法错误告警级别 |
|
| 控制语法错误在编辑器中的显示级别,例如红色波浪线(Error)或黄色波浪线(Warning)。 |
内置规则库管理
数据治理插件的检查行为由规则库驱动,分成内置规则和自定义规则。您可按需启用或禁用特定规则。
规则库管理仅对当前阿里云账号生效。
在 Data Studio 页面左侧导航栏中,单击治理图标
,进入数据资产治理插件配置。在数据资产治理插件面板的内置规则库中,找到目标治理规则,单击其后面的开关图标即可启用或禁用。
启用(默认):保存节点时,会触发此规则的检查。
禁用:保存节点时,将不再触发此规则的检查。
自定义规则库
当内置规则无法满足您团队特定的业务逻辑或编码规范时,数据资产治理插件提供自定义规则库,允许使用自然语言描述和正/反示例来定义新检查规则。
支持的自定义规则场景
检查维度 | 核心检查内容 | 主要价值 | 支持范围 |
代码文本 | 节点中的原始代码,如SQL脚本。 | 检查代码风格、禁用关键词、保障最佳实践。 | 全部任务类型 |
调度配置 | 资源组、调度周期、超时设置等。 | 保障资源合规使用,避免调度配置错误。 | 全部任务类型 |
节点血缘 | 任务的上下游依赖关系。 | 分析链路影响,预防关键节点变更风险。 | 全部任务类型 |
代码解析 | SQL中操作的表、函数、视图等。 | 识别敏感表操作、函数误用、保障权限合规。 | 所有SQL类任务 |
元数据及血缘 | 表结构、字段详情、表级血缘。 | 检查字段变更影响,保障数据模型一致性。 | MaxCompute SQL, EMR Spark SQL、EMR Hive、Hologres SQL |
数据治理指标 | 成本、存储、产出健康分等(T+1数据)。 | 监控数据成本与质量,推动持续治理优化。 | 所有SQL类任务 |
操作步骤
在 Data Studio 页面左侧导航栏中,单击治理图标
,进入数据资产治理插件配置。在数据资产治理插件面板的自定义规则库中,点击
+新建规则。例如,创建如下自定义规则。重要支持点击AI生成,通过Copilot能力生成具体的治理项规则。
规则名称:
事实表更新必须带WHERE。严重等级:警告级别仅在开发阶段进行提示,错误级别会在发布前进行告警和拦截。例如,选择
警告。作用范围:选择该规则作用的节点范围,例如选择
MaxCompute > MaxCompute SQL。生效范围:支持个人级生效、工作空间级生效和租户级生效。
重要租户级仅租户管理员可见;工作空间级仅工作空间管理员可见;普通成员仅可见个人级选项。
规则描述:
检查MaxCompute SQL中的UPDATE语句,如果更新的是事实表(表名以_f结尾),但没有WHERE子句,则标记为高风险问题。正确示例:
UPDATE my_project.order_detail_f SET status='shipped' WHERE order_id='123';UPDATE my_project.order_detail_dim SET status='shipped';
错误示例:
UPDATE my_project.order_detail_f SET status='expired';
保存后,此规则即可在深度检查中生效。
若不需要,鼠标移至目标自定义治理规则,单击其后面的禁用图标
即可禁用。
深度检查
除了快速入门章节提到的单文件检查之外,还支持批量深度检查。
在 Data Studio 页面左侧导航栏中,单击治理图标
,进入数据资产治理插件配置。在数据资产治理插件面板的深度检查中,选择批量待检查文件和需要规则,发起深度检查。
重要批量检查范围仅限于当前在编辑器中已打开的文件页签,最多可选5个文件,暂不支持选择未打开的文件。
批量检查时,同一时间仅支持执行一个深度检查。

在深度检查结果栏,单击右上角的查看日志,可查询大模型对检查规则的深度判断过程。
治理规则详解
在数据资产治理插件面板的深度检查右上角,点击
可查看所有检查项规则详情。 以下是数据治理插件内置的部分核心规则说明。
各治理项适用的节点类型,请参见知识库进行查看。
分区表查询必须带分区
风险说明:查询 MaxCompute 分区表时不指定分区,将触发全表扫描,消耗大量计算资源并产生高昂的计算费用。
错误代码示例:
SELECT user_id, order_amount FROM user_orders WHERE status = 'paid';正确代码示例:
SELECT user_id, order_amount FROM user_orders WHERE status = 'paid' AND pt = '${bizdate}'; -- 添加分区过滤条件自动修复逻辑:支持一键修复。系统会在
WHERE子句中自动添加分区条件,例如AND pt = '${bizdate}'。
禁止使用INSERT INTO+重跑属性
风险说明:如果 SQL 任务仅包含
INSERT INTO逻辑且在调度配置中允许任务重跑,那么每次重跑都会向目标表追加数据,极易导致数据重复,影响数据正确性。错误代码示例:
-- 任务属性设置为“可重跑” INSERT INTO target_table SELECT * FROM source_table;正确代码示例:
-- 任务属性设置为“可重跑” INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;自动修复逻辑:支持一键修复。系统会将
INSERT INTO修改为INSERT OVERWRITE,确保重跑时覆盖数据而非追加。
JOIN字段类型必须一致
风险说明:在 MaxCompute SQL 中,
JOIN操作的关联字段类型不一致,会导致隐式类型转换,可能引发计算错误、性能下降,影响数据质量。错误代码示例:
-- a.user_id 是 BIGINT, b.uid 是 STRING SELECT * FROM table_a a JOIN table_b b ON a.user_id = b.uid;正确代码示例:
-- a.user_id 是 BIGINT, b.uid 是 STRING SELECT * FROM table_a a JOIN table_b b ON a.user_id = CAST(b.uid AS BIGINT);自动修复逻辑:支持一键修复。系统会自动检测并对其中一个字段使用
CAST函数进行显式类型转换,使其与另一个字段类型匹配。
INSERT非本项目的表
风险说明:在 A 项目的任务中向 B 项目的表写入数据,被视为高危操作。这破坏了项目间的隔离性,可能导致数据访问越权和数据泄漏风险。
错误代码示例:
-- 在 project_A 的任务中执行 INSERT INTO project_B.some_table SELECT * FROM my_table;正确代码示例:
-- 建议方案:数据应由表的归属项目(project_B)的任务来写入。 -- 在 project_A 中应避免此操作。自动修复逻辑:不支持自动修复。需要您根据业务需求,调整数据同步链路,确保由目标项目自身任务完成数据写入。
禁止线上周期任务写开发环境的表
风险说明:生产环境的周期任务将数据写入开发环境的表中,会降低数据的防护等级,带来数据安全隐患。
错误代码示例:
-- 在生产环境(PROD)的任务中执行 INSERT OVERWRITE TABLE user_dev.temp_data SELECT * FROM user_prod.source_data;正确代码示例:
-- 生产任务应写入生产环境的表 INSERT OVERWRITE TABLE user_prod.result_data SELECT * FROM user_prod.source_data;自动修复逻辑:不支持自动修复。需要您手动修改目标表,确保数据流向符合环境隔离规范。
SQL中禁止创建表
风险说明:在调度执行的 SQL 任务中直接使用
CREATE TABLE,会导致表的归属混乱(通常归属于主账号或调度账号),增加管理成本,并存在数据被意外清除的风险。错误代码示例:
CREATE TABLE my_temp_table (id INT); INSERT INTO my_temp_table VALUES (1);正确代码示例:
-- 应在 DataWorks 的表管理模块预先创建表,然后在 SQL 任务中直接使用。 INSERT INTO my_temp_table VALUES (1);自动修复逻辑:不支持自动修复。建议您在 DataWorks 的元数据管理中创建表,或使用
CREATE TABLE IF NOT EXISTS规避部分场景的报错。
调度参数遗漏检查器
风险说明: 周期性调度任务的核心是按时间维度增量处理数据。如果在
WHERE条件中遗漏了调度参数(如${bizdate}),任务可能会每天处理全量数据,或处理错误的日期范围,导致数据遗漏、错乱和巨大的资源浪费。错误代码示例:
-- 错误:缺少调度参数,无法按天增量处理 INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}') SELECT user_id FROM login_log; -- 缺少 WHERE pt = '...'正确代码示例:
-- 正确:使用调度参数作为过滤条件,实现每日增量处理 INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}') SELECT user_id FROM login_log WHERE pt = '${bizdate}';自动修复逻辑: 不完全支持自动修复。插件会高亮提示此处可能缺少调度参数过滤,但由于业务逻辑复杂,建议您根据实际需求手动添加正确的过滤条件。
常见问题
Q:开启这些检查会影响编辑器性能或任务保存速度吗?
A:实时语法诊断 (LSP) 对编辑器性能有轻微影响,但在可接受范围内。数据治理插件在保存时触发,会增加少量保存耗时,具体时长取决于代码复杂度和规则数量。如果遇到明显卡顿,请检查网络环境或联系技术支持。
Q:这个功能收费吗?DataWorks Copilot 是必须的吗?
A:问题诊断功能本身是 DataWorks 的基础能力,不额外收费。但问题修复环节,若使用 DataWorks Copilot 的修复建议,则需遵循DataWorks Copilot的计费规则。您也可以选择不使用 Copilot,手动进行修复。
Q:为什么我开启了功能,但代码中的问题没有被检查出来?
A:请按以下步骤排查。
检查总开关:确认在 设置 > 用户 > 扩展 中,
DataStudio Governance Check Module Enablement和SyntaxErrorEnable均已启用。检查规则开关:进入规则库,确认您希望检查的规则处于启用状态。
确认节点类型:检查当前节点类型是否在目标规则的适用范围内。
网络问题:检查浏览器开发者工具中是否存在网络请求失败,LSP 服务或治理服务可能因网络问题未能成功加载。
Q:如果 LSP 或治理插件服务不可用,会发生什么?
A:如果相关后台服务暂时不可用,问题诊断功能将静默失败。您将无法看到实时的语法提示或保存时的治理问题,但不会影响您正常的代码编辑和保存操作。建议刷新网页之后,重新触发检查。
附录:名词解释
术语 | 英文 | 解释 |
即时检查 | Live Scan | 在用户保存时,对当前活动节点进行的快速、轻量级检查。目前由于性能问题,只应用于内置的高效规则。 |
深度检查 | Deep Scan | 由用户手动触发,对指定范围(单节点、个人的节点、工作区、文件夹)内的所有节点进行的全面、耗时较长的检查。应用所有规则,包括自定义AI规则。 |
自定义AI检查器 | Custom AI Checker | 用户通过特定格式(如自然语言+示例)定义的、由大模型驱动的检查规则。 |
问题面板 | Problems Panel | VS Code原生的或插件自定义的,用于集中展示代码问题的UI区域。 |
一键修复 | Quick Fix | 针对检查出的问题,插件提供的可点击的、能自动修正代码或配置的操作。 |