全部产品
Search
文档中心

大数据开发治理平台 DataWorks:节点开发问题诊断和治理

更新时间:Feb 05, 2026

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 分钟内体验代码问题诊断与修复的核心流程。

  1. 启用质量检查功能

    进入 DataWorks Data Studio,单击左侧导航栏底部的image > 设置,进入设置页面的用户页签,确保 Data Governance 下的 DataStudio Governance Check Module EnablementLspSetting 下的 SyntaxErrorEnable 均已勾选(默认启用)。

    说明

    DataStudio Governance Check Module Enablement 控制数据治理插件的检查功能,而 SyntaxErrorEnable 控制实时语法诊断功能。两者分别负责不同层面的代码质量检查,需要同时启用才能获得完整的问题诊断能力。

  2. 编写示例问题代码

    创建一个 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;
  3. 发现LSP语法问题

    此时,系统LSP实时触发检测,发现代码SELEC出现红色波浪线,提示语法错误。点击页面左下角的image图标,在弹出的问题区域查看节点存在的代码问题异常。

    image

  4. 修复LSP语法问题

    将鼠标悬停在有红色波浪线的 SELEC 上,单击出现的灯泡图标,使用 DataWorks Copilot 即可快速修复为 SELECT

    image

    image

  5. 发现治理项语法问题

    点击保存后,编辑器根据数据资产治理插件开启的检查项检测代码问题。此处,命中两条研发健康检查的内置规则:不允许create table以及分区表查询必须带分区

    若问题面板不自动限制,单击页面左下角的image图标,弹出问题区域。

    image

  6. 修复治理项语法问题

    可通过鼠标移至my_partitioned_table处,点击快速修复;或者点击问题区域的超链接,等待修复建议后,验证符合优化要求后,可选择应用建议。

    image

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

    image

  7. 发起单文件深度检查

    完成问题修复之后,可进行单节点代码的深度检查。例如,上述问题仅修复分区表查询必须带分区后,点击上方的深度检查,编辑器将从文件深入检查并展示未解决的禁止在任务中创建表问题

    image

核心功能详解

开启配置项

根据个人习惯,对问题诊断功能进行精细化配置。所有配置项仅对当前登录账号生效。

  1. 进入 DataWorks工作空间列表页,选择目标工作空间,单击 操作 列的 快速进入 > Data Studio

  2. 单击左侧导航栏底部image > 设置,进入设置页面的用户页签。

配置项路径

配置项名称

中文说明

可选值

默认值

影响说明

Data Studio

DataStudio Governance Check Module Enablement

启用数据治理插件

true / false

true

控制是否在保存节点时进行数据规范、安全、性能等问题的检查。

LspSetting

SyntaxErrorEnable

启用实时语法诊断

true / false

true

控制是否在编辑代码时实时显示语法错误。

LspSetting

SyntaxErrorSeverity

语法错误告警级别

Error, Warning, Info

Error

控制语法错误在编辑器中的显示级别,例如红色波浪线(Error)或黄色波浪线(Warning)。

内置规则库管理

数据治理插件的检查行为由规则库驱动,分成内置规则和自定义规则。您可按需启用或禁用特定规则。

重要

规则库管理仅对当前阿里云账号生效。

  1. 在 Data Studio 页面左侧导航栏中,单击治理图标image,进入数据资产治理插件配置。

  2. 数据资产治理插件面板的内置规则库中,找到目标治理规则,单击其后面的开关图标即可启用或禁用。

    • 启用(默认):保存节点时,会触发此规则的检查。

    • 禁用:保存节点时,将不再触发此规则的检查。

自定义规则库

当内置规则无法满足您团队特定的业务逻辑或编码规范时,数据资产治理插件提供自定义规则库,允许使用自然语言描述和正/反示例来定义新检查规则。

支持的自定义规则场景

检查维度

核心检查内容

主要价值

支持范围

代码文本

节点中的原始代码,如SQL脚本。

检查代码风格、禁用关键词、保障最佳实践。

全部任务类型

调度配置

资源组、调度周期、超时设置等。

保障资源合规使用,避免调度配置错误。

全部任务类型

节点血缘

任务的上下游依赖关系。

分析链路影响,预防关键节点变更风险。

全部任务类型

代码解析

SQL中操作的表、函数、视图等。

识别敏感表操作、函数误用、保障权限合规。

所有SQL类任务

元数据及血缘

表结构、字段详情、表级血缘。

检查字段变更影响,保障数据模型一致性。

MaxCompute SQL, EMR Spark SQL、EMR Hive、Hologres SQL

数据治理指标

成本、存储、产出健康分等(T+1数据)。

监控数据成本与质量,推动持续治理优化。

所有SQL类任务

操作步骤

  1. 在 Data Studio 页面左侧导航栏中,单击治理图标image,进入数据资产治理插件配置。

  2. 数据资产治理插件面板的自定义规则库中,点击+新建规则。例如,创建如下自定义规则。

    重要

    支持点击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';

  3. 保存后,此规则即可在深度检查中生效。

  4. 若不需要,鼠标移至目标自定义治理规则,单击其后面的禁用图标image即可禁用。

深度检查

除了快速入门章节提到的单文件检查之外,还支持批量深度检查。

  1. 在 Data Studio 页面左侧导航栏中,单击治理图标image,进入数据资产治理插件配置。

  2. 数据资产治理插件面板的深度检查中,选择批量待检查文件和需要规则,发起深度检查。

    重要
    • 批量检查范围仅限于当前在编辑器中已打开的文件页签,最多可选5个文件,暂不支持选择未打开的文件。

    • 批量检查时,同一时间仅支持执行一个深度检查。

    image

  3. 深度检查结果栏,单击右上角的查看日志,可查询大模型对检查规则的深度判断过程。

治理规则详解

数据资产治理插件面板的深度检查右上角,点击image可查看所有检查项规则详情。 以下是数据治理插件内置的部分核心规则说明。

说明

各治理项适用的节点类型,请参见知识库进行查看。

分区表查询必须带分区

  • 风险说明:查询 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 EnablementSyntaxErrorEnable 均已启用。

    • 检查规则开关:进入规则库,确认您希望检查的规则处于启用状态。

    • 确认节点类型:检查当前节点类型是否在目标规则的适用范围内。

    • 网络问题:检查浏览器开发者工具中是否存在网络请求失败,LSP 服务或治理服务可能因网络问题未能成功加载

  • Q:如果 LSP 或治理插件服务不可用,会发生什么?

    A:如果相关后台服务暂时不可用,问题诊断功能将静默失败。您将无法看到实时的语法提示或保存时的治理问题,但不会影响您正常的代码编辑和保存操作。建议刷新网页之后,重新触发检查。

附录:名词解释

术语

英文

解释

即时检查

Live Scan

在用户保存时,对当前活动节点进行的快速、轻量级检查。目前由于性能问题,只应用于内置的高效规则。

深度检查

Deep Scan

由用户手动触发,对指定范围(单节点、个人的节点、工作区、文件夹)内的所有节点进行的全面、耗时较长的检查。应用所有规则,包括自定义AI规则。

自定义AI检查器

Custom AI Checker

用户通过特定格式(如自然语言+示例)定义的、由大模型驱动的检查规则。

问题面板

Problems Panel

VS Code原生的或插件自定义的,用于集中展示代码问题的UI区域。

一键修复

Quick Fix

针对检查出的问题,插件提供的可点击的、能自动修正代码或配置的操作。