导读
DataWorks 是阿里云一站式智能化数据开发与治理平台,支持搭配MaxCompute/Hologres/AnalyticDB/StarRocks/EMR/CDH 等大数据引擎,为企业构建数据仓库、数据湖以及湖仓一体(Lakehouse)现代数据架构提供数据平台产品解决方案。
作为阿里巴巴大数据平台建设者,DataWorks 从 2009 年起不断发展和沉淀阿里巴巴大数据建设方法论并产品化,在阿里内部每月有超过50000 名员工在使用 DataWorks 生产数据和消费数据。DataWorks 在阿里云上与数万家政务/金融/零售/互联网/能源/制造等客户携手,助力企业数字化转型升级,目前 DataWorks 云上日均调度任务实例规模已经超 1700 万。
随着大模型的不断发展,大模型在数据产品中的应用也逐步得到了验证和落地,DataWorks 也于去年正式推出了 Copilot 产品,以帮助数据开发工程师和数据分析师提升SQL 开发和分析的效率和体验。今天,我想给大家介绍一下 DataWorks Copilot 近期的一些产品进展。
本文将会围绕以下几点展开:
- 阿里云 DataWorks 产品简介
- DataWorks Copilot 产品演进方向
- DataWorks Copilot 之 NL2SQL
- DataWorks Copilot 之 SQL 代码补全
- 小结
分享嘉宾:田奇铣 阿里云DataWorks产品负责人,高级产品专家
在大数据平台产品建设领域具备 10 年以上工作经验,在数据开发、数据治理等领域具备丰富的实践经验,支持了阿里巴巴内部的数据中台建设和阿里云上企业的数字化转型。
一、阿里云 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 开发和数据分析的效率。
以上就是本次分享的内容,谢谢大家。