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