DataWorks Copilot:大模型時代數據開發的新范式
DataWorks 是阿里云一站式智能化數據開發與治理平臺,支持搭配MaxCompute/Hologres/AnalyticDB/StarRocks/EMR/CDH 等大數據引擎,為企業構建數據倉庫、數據湖以及湖倉一體(Lakehouse)現代數據架構提供數據平臺產品解決方案。
作為阿里巴巴大數據平臺建設者,DataWorks 從 2009 年起不斷發展和沉淀阿里巴巴大數據建設方法論并產品化,在阿里內部每月有超過50000 名員工在使用 DataWorks 生產數據和消費數據。DataWorks 在阿里云上與數萬家政務/金融/零售/互聯網/能源/制造等客戶攜手,助力企業數字化轉型升級,目前 DataWorks 云上日均調度任務實例規模已經超 1700 萬。
隨著大模型的不斷發展,大模型在數據產品中的應用也逐步得到了驗證和落地,DataWorks 也于去年正式推出了 Copilot 產品,以幫助數據開發工程師和數據分析師提升SQL 開發和分析的效率和體驗。今天,我想給大家介紹一下 DataWorks Copilot 近期的一些產品進展。
一、阿里云 DataWorks 產品簡介
DataWorks 是阿里云一站式智能化數據開發與治理平臺,DataWorks 是一站式數據平臺的倡導者和踐行者。DataWorks 支持搭配阿里云大數據計算服務 MaxCompute,實時數據倉庫 Hologres、AnalyticDB、StarRocks,開源數據湖及湖倉一體平臺 EMR、CDH 等計算引擎,提供了以下產品服務:
- 數據集成:支持離線數據同步、實時數據同步,同時支持整庫數據同步、分庫分表數據同步、全增量一體化數據同步、數據入湖等場景。
- 數據開發工具鏈:支持數據建模、數據開發、任務調度和任務運維監控,DataWorks 自研的大規模、高性價比、全托管免運維的任務調度引擎,能夠保障企業大數據生產的安全性和穩定性,讓企業專注于數據業務本身。
- 數據治理工具鏈:支持數據地圖、數據質量、數據安全和數據資產治理,DataWorks 提供了主動式、自動化的數據治理工具,幫助企業主動發現數據問題、自動化處置數據問題并實時評估數據健康程度,讓企業數據治理可持續發展和落地。
- 數據消費工具鏈:支持智能數據洞察,通過 AI 增強分析幫助企業快速獲得數據見解;支持數據服務,通過低代碼化數據 API 構建與編排服務加速企業數據應用和數據流轉。
進入大模型時代,一站式數據平臺為全面智能化創造了條件,通過 Data + AI 雙輪驅動,有效提升了企業數據價值的獲取效率。在大模型應用過程中,Prompt Engineering 環節尤為重要,一站式數據平臺可以提供全面的數據支持和豐富的上下文信息,利用大模型 In-Context Learning 的能力,可以幫助大模型更好地理解企業業務知識;同時,借助 AI Agent 能力,可以實現通過統一的自然語言交互界面與圖形交互界面相結合的方式,讓一站式數據平臺內部的子產品模塊做到更好的協同,從而實現一站式數據平臺的全面智能化,為企業數據開發工程師、數據分析師和業務人員在數據生產和數據消費提供更好的用戶體驗和更高的工作效率,最終幫助企業進一步實現“降本增效”。
二、DataWorks Copilot 產品演進方向
目前 DataWorks Copilot 主要有兩個演進方向,一個方向是智能 SQL 編程助手,輔助 SQL 編程,支持 NL2SQL 及 SQL 代碼補全;另一個方向是 AI Agent,提供 LUI(自然語言用戶界面),以提升產品功能操作的便捷性和用戶體驗。本文主要介紹 DataWorks Copilot 在智能 SQL 編程助手方向上的產品進展與產品能力。
三、DataWorks Copilot 之 NL2SQL
NL2SQL(自然語言生成 SQL)并不是一個新的產品方向,在大模型出來之前已經發展了很多年,但一直沒能取得突破性進展,只能在特定場景使用,并且需要做大量的事先數據準備和知識圖譜構建。大模型的出現,讓 NL2SQL 迎來了曙光,極大提升了 NL2SQL 的普適性,簡化了 NL2SQL 的實現路徑,讓 NL2SQL 具備了廣泛落地應用的可能。DataWorks Copilot 通過大模型技術,在 NL2SQL 方向經過一年多的實踐,我們在以下幾個應用場景取得了較好的落地效果。
1. 簡單數據查詢
數據查詢,即通過自然語言生成 SQL,再執行 SQL 以查詢數據,也就是我們日常所說的“取數”場景。目前 DataWorks Copilot 在單表數據查詢場景已經有不錯的效果,比如“按日志和行為分組統計用戶數量和商品數量,行為包含瀏覽和加購,日期從 20240101 到 20240331”,Copilot 能夠準確理解語義和數據表的 Schema 信息并生成正確的 SQL 語句。這個十分適合數據分析師、業務人員日常實現通過“說話”就可以便捷地查詢和獲取數據。
2. SQL 優化與轉換
DataWorks Copilot 可以幫你實現 SQL 優化和轉換,這其實是一個 SQL 生成 SQL 的場景,比如你有一個 SQL 執行后的結果是一組多列的數據集,你想把這個數據集轉為多行的數據集,以便用于繪制出一個餅圖,你只需要選中當前的 SQL 然后對 Copilot 說“修改 SQL,將其結果從列轉置為行”,DataWorks Copilot 就會幫你生成列轉行的 SQL。有了 DataWorks Copilot,你不用記憶復雜的 SQL 技巧,只需要用自然語言說出你心里想要的效果,Copilot 可以自動幫你改寫和優化 SQL,讓你事半功倍。
3. SQL 語法查詢與講解
DataWorks Copilot 也是一個非常聰明的、隨叫隨到的 SQL 學習小助手,它可以幫助你查詢 SQL 語法,讓你學習 SQL 不用再去翻閱幫助文檔、用搜索引擎或者求助別人。DataWorks Copilot 根據你問的 SQL 問題進行詳細的講解,還會附帶 SQL 示例幫助你更好的學習理解。
4. 函數查詢
與語法查詢類似,DataWorks Copilot 還可用于查詢函數,它同樣會給出包含函數功能介紹、輸入輸出參數和 SQL 示例在內的信息,幫助你快速理解函數。
5. 功能咨詢
有時候,你想要通過 SQL 實現一個功能,但你既不知道要用哪種 SQL 語法也不知道用哪個函數來實現,這時,你只需要對 DataWorks Copilot 直接用自然語言描述你的訴求(Tips:盡可能的直白描述你想要達到的功能效果),例如“一張表有一個自動遞增的 id 字段,不連續,如何按頁獲取 id 的范圍”,Copilot 就會直接給出建議并幫你寫好 SQL 示例。
6. 注釋生成
我們通常自己懶得寫代碼注釋,同時又討厭別人的代碼不寫注釋,有了 DataWorks Copilot 這個“矛盾”就可以輕松化解。Copilot 可以一鍵為你的 SQL 代碼生成注釋,比如批量為你的 DDL 語句生成字段的 Comment,你只需要進行簡單的微調即可,這將極大地提高你的 SQL 可讀性和開發效率。
7. SQL 解釋
DataWorks Copilot 不僅可以為 SQL 注釋,也可以解釋 SQL。如果你是一名略懂些 SQL 但又不十分精通 SQL 的同學,在工作中經常要向數倉工程師或者 BI 同學提“取數”的需求,對方給你一條復雜 SQL 語句,你似懂非懂但又想改下 SQL 以用于別的場景,這個時候就可以讓 DataWorks Copilot 來解釋一個這個 SQL。Copilot 會耐心的將這個復雜 SQL 拆解為多段子查詢,并逐一講解其中的功能,介紹其中使用到的函數,幫助你理解這個 SQL 寫法和用途,讓你快速掌控這個 SQL 語句。
8. SQL 一鍵糾錯
即使是專業的數據工程師也會在 SQL 開發過程中出現各類 SQL 錯誤,例如缺少標點、括號、函數使用不正確、語法不完整等等。這些場景,DataWorks Copilot 都可以幫助你快速發現問題,糾正錯誤,并生成正確的 SQL,從而大大降低你自己尋找錯誤和糾正 SQL 的時間。
以上是 DataWorks Copilot 在 NL2SQL 方向上的 8 種適用場景和能力,當然,DataWorks Copilot 可能還會很多讓人意想不到的點,你可盡情發揮你的想象,通過 Prompt 讓 Copilot 為你生成 SQL,讓你從繁復的 SQL 編程中提升效率,有更多的時間來思考業務本身。
四、DataWorks Copilot 之 SQL 代碼補全
代碼補全是編程類 Copilot 的主要場景和能力。目前市場上主流的編程類 Copilot 往往是對 Java、Python 等高級語言的支持,對 SQL 支持的好的并不多見。眾所周知,SQL 代碼補全往往比 Java、Python 類高級語言的代碼補全更具挑戰性,主要原因有以下幾個方面:
- 上下文和環境的依賴性:SQL 代碼不是獨立存在的,而是依賴于數據表的元數據信息以及表與表之間的關聯關系。
- SQL 語義多樣性:實現同一種查詢結果,可以有多種 SQL 寫法,如何實現“最佳”寫法存在挑戰。
- 語法簡潔但高度專業化:SQL 語法簡潔但每一個關鍵字、函數或語法都有特定的含義,大模型要準確理解這些得通過針對性的訓練學習。
- 執行計劃和性能考量: 這跟數據庫底層的執行計劃有關,需要考慮如何書寫才能使 SQL 的性能最優。
- 數據庫特異性:市面上不同的數據庫往往存在不同的 SQL 方言,存在差異,針對這種差異性我們要投入大量時間做 SQL 數據集準備、數據標注、模型微調。
- 高度業務相關性:SQL 語句通常與特定業務高度相關,比如一個指標存在特定的計算口徑,這是與公司業務相關,通用的大模型也無法提前學習。
n公開的 SQL 數據集比 Java、Python 少:這導致基模型本身對 SQL 的理解和能力就比 Java、Python 等語言要差。
DataWorks Copilot 針對以上的幾個挑戰,面向 SQL 代碼補全方向做了大量的模型微調和 Prompt Engineering 工作,并發揮出一站式平臺的優勢,目前在 SQL 補全的準確性已經優于通用類編程 Copilot。以下列舉幾項目前 DataWorks Copilot SQL 代碼補全比較擅長的場景。
- 有規律的代碼連續推薦:例如 case when 語句,只需寫出前一兩行,Copilot 就知道接下來該怎么寫。
- 字段、字段別名推薦:Copilot 可以借助元數據信息自動推薦一些關聯的字段,還可以自動生成字段別名。
- 注釋推薦、分區字段推薦、Group by 字段推薦、Order by 字段推薦等。
- 根據上下文自動聯想推薦代碼:比如下圖中展示了根據 SELECT 語句,推薦出 INSERT OVERWRITE 代碼和 CREATE TABLE 代碼,Copilot 可以幫助你輕松將寫好的 SELECT 語句轉化為一個用于生產調度的數據任務。
五、小結
以上我們介紹了 DataWorks Copilot 目前在智能 SQL 編程助手方向所具備的能力,主要包括:自然語言生成 SQL、SQL 代碼補全、注釋生成、SQL 解釋、問答/函數查詢、SQL 糾錯、SQL 優化等。
希望 DataWorks Copilot 可以成為你的私人 SQL 編程助手,幫助你學習 SQL、編寫 SQL,提升 SQL 開發和數據分析的效率。目前 DataWorks Copilot 已經開啟“邀測”,可以到阿里云 DataWorks 產品詳情頁面申請,也可聯系您的客戶經理或者解決方案架構師申請。