全部產品
Search
文件中心

DataWorks:節點開發問題診斷和治理

更新時間:Feb 06, 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

針對檢查出的問題,外掛程式提供的可點擊的、能自動修正代碼或配置的操作。