Data Agent 在執行自然語言問數與 SQL 產生任務時,對業務表結構、欄位含義及指標口徑的理解深度直接影響輸出品質。語義分析功能通過自動掃描指定資料來源,提取表間關聯、欄位業務語義及指標計算邏輯,產生標準化的結構化語義模型(YAML 格式)。您可通過 /dataworks-semantic 指令將該模型注入 Data Agent 的 AI 上下文,從而提升問數回答的準確性與 SQL 產生的可靠性。
功能概述
Data Agent 在執行問數、SQL 產生等任務時,需要理解業務資料的結構和語義。語義分析功能通過自動掃描 MaxCompute 資料來源表,提取表之間的關聯關係、欄位含義以及指標計算口徑,產生結構化的語義模型(YAML 格式)。該模型以可視化圖譜和源碼雙屏聯動的方式呈現分析結果,便於直觀查看資料資產間的關聯關係。
通過語義分析,您可以:
自動梳理資料資產關係:系統自動識別表結構、欄位語義和表間關聯,無需手動整理。
產生可視化語義圖譜:以圖譜形式展示資料集和指標的關聯關係,支援圖譜與 YAML 源碼的雙屏聯動查看。
提升 AI 問數準確率:將語義模型載入至 Data Agent 會話上下文(通過
/dataworks-semantic指令),使 AI 基於業務語義產生更準確的 SQL。支援人工修正與迭代:分析結果支援線上編輯和儲存,修改後即時生效,無需重新運行任務。
從 MaxCompute 資料來源到精準問數,語義分析端到端流程如下:
前提條件
已開通 Data Agent。如未開通,請參考開通流程完成開通操作。
工作空間內已配置可用的 MaxCompute 資料來源。
已有可用的資源群組,建議規格不少於 4 CU。
步驟一:建立語義分析任務
進入 Data Agent 設定中心,在導覽列單擊語義分析。
在語義分析列表頁,單擊建立任務。
在建立任務彈窗中,配置以下參數:
配置項
說明
名稱
必填。格式需符合使用限制中所述要求。
資料來源類型
必填。當前僅支援 MaxCompute。
業務域及關注
必填。用自然語言描述本次分析希望聚焦的業務域與表層級。例如"電商直播域,主播帶貨和商品銷售兩大維度,DWD 到 ADS 層"。
該配置有雙重作用:
影響表的分析方向:指引 AI 引擎聚焦的分析方向,使其重點提取相關維度指標和關聯。
影響代碼的讀取範圍:AI 會根據業務域描述,通過代碼所在空間中的 DataWorks 檔案夾結構定位相關代碼和調度任務。例如填寫"電商直播域",AI 引擎會重點分析"電商""直播"等檔案夾下的節點代碼,而非遍曆整個工作空間。
描述越詳細,AI 引擎的表分析越精準、代碼掃描範圍越聚焦。
代碼所在空間
必填。從下拉式清單中選擇 DataWorks 工作空間。
該工作空間不僅是執行環境,同時作為 AI 引擎的業務知識來源。AI 引擎會讀取該空間下的 SQL 指令碼、調度任務和代碼檔案夾結構,從中提取指標計算口徑與加工邏輯。例如從 SQL 代碼中提取
SUM(CASE WHEN order_status='paid' THEN pay_amount END)等計算運算式,理解指標的實際計算方式。重要請務必選擇包含資料加工代碼的工作空間。若選錯工作空間,AI 無法讀取真實加工代碼,只能依賴欄位注釋推測指標含義,導致模型口徑與實際不一致。
資源群組
必填。選擇用於運行任務的資源群組。
重點分析表
必填。從級聯選取器中選擇需要重點分析的表——左欄展開 MaxCompute 專案,右欄勾選具體表,最多 30 張表。模型會聚焦分析這些表的結構和關聯關係。
引用檔案
選填。支援上傳檔案或輸入檔案 URL 兩種方式使用外部參考資料。
填寫完成後,單擊確定。系統提示"任務已建立"後,列表自動重新整理。
常見誤區
選表過多:勾選大量表(接近 30 張上限)會導致分析重點分散,建議優先選擇 5~10 張核心 ADS/DWS 層表。
業務域描述過於寬泛:例如僅填寫"電商"。AI 引擎無法定位到具體的 DataWorks 檔案夾,可能掃描大量無關代碼,導致模型產出過於泛化。建議具體到分析維度和資料層級,例如"電商直播域,主播帶貨和商品銷售兩大維度,DWD 到 ADS 層"。
未上傳引用檔案:當表欄位注釋不完善時(例如欄位名
gmv缺少注釋),上傳資料字典或指標口徑文檔可顯著提升 AI 引擎對欄位語義的識別準確度。
步驟二:運行語義分析任務
任務建立完成後,可通過以下方式運行:
在語義分析列表頁,找到目標任務,在操作列單擊運行。
系統彈出"運行已提交"提示,並自動開啟任務詳情彈窗。
任務提交後,系統將在後台執行語義分析。運行耗時取決於分析表數量和資料量,通常需數分鐘。AI 引擎從以下兩個維度並行分析:
維度一:讀取代碼所在空間中的 SQL 指令碼與調度任務。根據業務域描述,通過 DataWorks 檔案夾結構定位相關代碼,解讀 SQL 中的真實指標計算口徑和表間加工關係。
維度二:掃描重點分析表的中繼資料。提取每張表的欄位業務含義、同義字、表間層級關係、業務指標定義、派生指標公式以及樣本問答。
兩個維度分析結果交叉驗證後,合并為一份完整的語義模型。
步驟三:查看任務詳情與運行狀態
單擊工作清單中的任務名稱,即可開啟任務詳情彈窗。任務詳情包含以下頁簽:
運行歷史
展示該任務的所有運行記錄,每條記錄包含運行 ID、開始時間、運行狀態和操作按鈕。
運行狀態包括:
狀態 | 說明 |
等待中 | 任務排隊等待調度 |
運行中 | 任務正在執行 |
成功 | 任務執行完成 |
失敗 | 任務執行出錯 |
已終止 | 任務被手動停止 |
運行歷史頁面支援以下操作:
查看日誌:始終可用。單擊後彈出日誌查看視窗。日誌資訊會每 5s 自動重新整理,直至任務結束。
查看結果:僅運行狀態為"成功"時可用。單擊後開啟語義模型結果查看器,展示圖譜和源碼的雙屏聯動視圖。
下載結果:僅運行狀態為"成功"時可用。單擊後彈出結果檔案下載列表。
停止運行:僅任務處於"等待中"或"運行中"時可用。單擊後彈出二次確認,確認後任務將終止。
其他頁簽
任務詳情彈窗還包含以下頁簽:
最新結果:展示最近一次成功啟動並執行產物檔案清單,支援查看、編輯或下載結果檔案。
任務概覽:以索引值對形式展示任務的基本配置資訊,如任務 ID 等。
重點分析表:列出該任務所選擇的所有分析表,包括序號、所屬 MaxCompute 專案、表名和實體 ID。單擊詳情可跳轉到資料地圖對應表的詳情頁面。
上傳檔案:展示該任務關聯的引用檔案清單,包括檔案名稱、大小和上傳時間。
步驟四:查看與編輯語義模型
前往運行歷史頁簽,對狀態為"成功"的運行記錄單擊查看結果,即可開啟語義模型結果查看器。
結果查看器提供圖譜與源碼的雙屏聯動視圖:
語義模型圖譜:以可視化方式展示資料集之間的關聯關係。圖譜中的節點代表資料集或指標,邊代表它們之間的關聯關係。單擊圖譜中的節點或邊,右側源碼編輯器會自動滾動到對應行並高亮。
YAML 源碼編輯器:展示語義模型的 YAML 源碼。源碼頂層結構包含資料集定義、欄位描述、ai_context系等資訊。移動游標瀏覽源碼時,左側圖譜會自動高亮並置中對應的節點或邊。
如果結果檔案為 YAML 格式,結果查看器預設展示圖譜和源碼的雙屏視圖;如果結果為索引檔案(如 _index.json,用於列出該次運行產生的所有結果檔案),則僅展示源碼唯讀視圖。
結果查看器還支援以下功能:
全屏查看:單擊全屏按鈕可全屏查看圖譜或源碼。
編輯與儲存:單擊編輯進入編輯模式,修改 YAML 內容後可單擊儲存寫回後端。儲存後修改立即生效,無需重新運行任務。如需撤銷修改,可單擊重設恢複至上次儲存的版本。還支援對比修改查看差異。
語義模型 YAML 結構詳解
AI 語義分析引擎產生的語義模型採用 YAML 格式,其頂層結構包含四大核心模組:
模組 | 說明 |
ai_context | AI 上下文,包括業務域描述(instructions)和樣本問答(few_shots)。instructions 告訴 AI 資料分層、分區欄位等全域資訊;few_shots 提供真實的問答 + SQL 樣本,協助 AI 理解常見查詢模式。 |
metrics | 業務指標定義。每個指標包含名稱、描述、同義字(synonyms)和計算運算式(expression)。例如 GMV 的同義字包括"成交額""銷售額",計算運算式為 |
metric_formulas | 派生指標公式。定義由基礎指標組合計算得到的派生指標,例如"客單價 = GMV / 訂單數""人均購買金額 = GMV / 購買人數"。 |
datasets | 資料集定義。列出每張表的來源、描述和欄位詳情(欄位名、類型、含義、同義字、是否為指標欄位)。 |
以下為簡化的 YAML 源碼樣本:
semantic_model:
- ai_context:
instructions: |
電商直播資料分析域。涵蓋主播帶貨和商品銷售兩大分析維度。
資料分層:ODS → DWD → DWS → ADS
分區欄位為 dt,金額單位均為人民幣元
few_shots:
- question: 昨天 GMV 最高的前10個主播是誰?
sql: |
SELECT anchor_name, gmv
FROM ads_ctlive_anchor_stats
WHERE stat_period = '1d'
ORDER BY gmv DESC LIMIT 10;
metrics:
- name: GMV
description: 成交總額(元)
ai_context:
synonyms: [成交額, 銷售額, 交易額]
expression:
dialects:
- dialect: MaxCompute
expression: SUM(gmv)
metric_formulas:
- name: 客單價
description: 平均每單成交金額(元)
formula: GMV / 訂單數
datasets:
- source: ads_ctlive_anchor_stats
description: ADS-主播成交統計表
fields:
- name: anchor_name
type: string
description: 主播暱稱
synonyms: [主播, 主播名, 達人]
- name: gmv
type: double
description: 成交總額(元)
metric: true
synonyms: [成交額, GMV, 銷售額]步驟五:在 Data Agent 中載入與使用語義模型
通過前述步驟,您已在控制台成功產生 YAML 語義模型。但該模型僅儲存於服務端,Data Agent 會話不會自動載入。您需要在 Agent 會話中主動載入語義模型,使 AI 在回答時引用模型中的業務知識。
操作步驟:
開啟 新版 Data Agent,進入交談視窗。
在聊天輸入框中輸入
/dataworks-semantic並發送。Agent 自動執行:環境檢查 → 列出可用任務 → 下載 YAML 產物 → 注入當前會話 AI 上下文。
確認載入成功後,即可基於語義模型進行問數、SQL 產生等操作。
載入語義模型後,以下情境的回答品質會顯著提升:
情境 | 說明 |
自然語言問數 | 以自然語言提問,例如"本月 GMV 趨勢""各品牌購買人數 TOP5"。AI 會自動選擇正確的表、欄位和過濾條件產生 SQL。 |
SQL 產生與解釋 | 要求 AI 產生查詢各主播近 7 天日均 GMV 的 SQL。AI 會基於語義模型中的表結構和指標口徑產生準確的 SQL。 |
指標口徑查詢 | 向 AI 查詢"客單價的計算口徑"。AI 會引用語義模型中的 metric_formulas 回答:客單價 = GMV / 訂單數。 |
業務分析報告 | 要求 AI 分析本月各品類的銷售情況。AI 會結合語義模型中的維度指標產生多維度分析報告。 |
語義模型載入僅對當前會話生效。新開會話後需重新輸入
/dataworks-semantic載入。如在控制台編輯了 YAML 或重新運行了任務,需在 Agent 會話中重新載入以擷取最新版本。
支援在同一會話中載入多個語義模型。如存在多個分析任務(如"電商"和"庫存"),可逐一載入,AI 將同時參考多個業務域的語義模型。
已下載的 YAML 檔案快取在本地
.semantic/目錄下,下次載入同一任務時無需重新從服務端下載(除非模型有更新)。
/dataworks-semantic 命令參考
/dataworks-semantic 是 DataWorks 內建 Skill,提供語義模型下載、索引構建、搜尋查詢及版本復原等全生命週期管理能力。在 Data Agent 會話中輸入該命令即可調用。
以下為完整命令參考:
命令 | 功能 | 說明 |
| 環境自檢 | 檢測 Python、依賴庫、設定檔(.env)、網路連通性。 |
| 建立任務 | 開啟語義分析任務建立頁面。 |
| 工作清單 | 列出所有語義分析任務及狀態。 |
| 運行歷史 | 列出指定任務的所有運行記錄。 |
| 下載產物 | 下載 YAML 檔案到本地,支援 |
| 批量同步 | 下載所有任務最新結果,支援 |
| 構建索引 | 從 YAML 構建索引檔案,用於快速查詢。 |
| 搜尋索引 | 按欄位名、表名、指標名搜尋語義資訊。 |
| 查驗原文 | 讀取原始 YAML 證據,驗證索引與源檔案一致性。 |
| 復原快照 | 恢複至歷史快照版本,支援 |
| 產生報告 | 產生 HTML 概覽報告,含指標、表、公式和樣本。 |
| 查看日誌 | 顯示任務作業記錄,支援 |
典型使用流程:check → list → download/sync → index → search → 載入 YAML 至會話上下文 → 基於語義模型精準問數。
情境樣本:電商直播域端到端實踐
以下以電商直播情境為例,展示從建立任務到精準問數的完整流程。
1. 建立任務(步驟一)
在語義分析頁面單擊建立任務,填入以下配置:
代碼所在空間 | 選擇 |
業務域及關注 | "電商直播域,主播帶貨和商品銷售兩大分析維度,資料分層 ODS→DWD→DWS→ADS" |
重點分析表 | 選擇 4 張核心表: |
2. 運行任務(步驟二)
單擊運行後,AI 語義引擎將自動執行以下分析:根據"電商直播域"定位工作空間中對應檔案夾的 SQL 指令碼 → 從代碼中提取真實指標計算口徑(例如發現 gmv = SUM(CASE WHEN order_status='paid' THEN pay_amount END))→ 掃描 4 張表的中繼資料與欄位關係 → 識別 ADS / DWS 層級關聯 → 產生包含指標定義、派生公式和樣本 SQL 的結構化 YAML 模型。
關鍵差異:如果不選對代碼所在空間,AI 只能依賴欄位注釋推測指標含義;選對之後,AI 從真實 SQL 代碼中提取口徑,模型品質有質的提升。
3. 查看與編輯模型(步驟三、四)
任務運行成功後,在任務詳情頁開啟語義模型頁簽。您可以通過圖譜視圖直觀確認表間關聯是否合理,同時在 YAML 編輯器中微調指標定義或補充業務說明。確認無誤後儲存即可。
4. 載入到 Data Agent(步驟五)
進入 Data Agent 會話,依次執行 /dataworks-semantic download <任務名> 和 /dataworks-semantic index <任務名> 將模型下載到本地並構建索引。此後該會話中的所有問答都將基於語義模型進行精準回答。
5. 驗證效果
載入完成後,用同樣的問題對比載入前後的回答品質:
使用者提問:"昨天 GMV 最高的前 10 個主播是誰?"
未載入語義模型 | 已載入語義模型 |
表名猜錯、欄位名猜錯、缺少統計周期過濾條件。 | 正確的表名、正確的欄位名、正確的統計周期過濾。 |
使用者提問:"近 30 天各品類的客單價是多少?"
未載入語義模型 | 已載入語義模型 |
客單價 ≠ 商品均價,缺少時間過濾,表名錯誤。 | 正確理解"客單價"= GMV / 訂單數,使用正確的表和統計周期。 |
載入語義模型後,AI 在回答問題時會自動參考模型中的 ai_context(業務指令)、metrics(指標定義與同義字)、metric_formulas(派生公式)和 datasets(表與欄位對應),從"推測"轉變為"基於知識的精準產生"。
常見問題
Q: 任務運行失敗可能是什麼原因?
A: 任務運行失敗通常由以下原因導致:
資源群組規格不足:資源群組規格低於 4 CU 時,任務可能因資源不足而失敗。建議選擇規格不少於 4 CU 的資源群組。
MaxCompute 專案許可權不足:執行語義分析的工作空間需要對目標 MaxCompute 專案具備讀取許可權。請確認工作空間與 MaxCompute 專案的綁定關係及許可權配置。
資料量過大:單次分析涉及的表過多或資料量過大可能導致逾時。建議減少重點分析表數量後重試。
Q: 編輯 YAML 後需要重新運行任務嗎?
A: 不需要。在結果查看器中編輯 YAML 並儲存後,修改立即生效。下次通過 /dataworks-semantic 下載時會自動擷取最新版本。
Q: 在 Data Agent 中使用語義模型時提示 token 到期?
A: 運行 /dataworks-semantic check 檢查環境。如果提示認證相關錯誤,請重新整理認證資訊後重試。
Q: 下載時提示"local edits detected"怎麼辦?
A: 說明上次下載後 YAML 檔案被修改過(雜湊值不匹配)。如需覆蓋本地修改,添加 --force 參數強制下載。建議先將修改內容備份到其他位置。