跳到主要内容

AI 副驾驶:1.提升数据查询的智能化体验

· 阅读需 18 分钟
Tiven Wang

在当今数据驱动的商业环境中,数据分析已经成为了企业决策的关键一环。元数分析云为您提供了一种智能化的数据查询体验,通过其基于 ChatGPT 的强大的 AI 副驾驶功能,您可以更加高效地进行数据查询、优化和解释。本篇文章将为您详细介绍如何在元数分析云中开启和配置AI副驾驶,以及如何在查询实验室中利用AI副驾驶提升数据查询的效率。

查询实验室 提供了使用 SQL 查询语句灵活操作数据源实体(物理表视图或者多维数据集)的功能, 帮助用户进行日常的数据运维工作. 查询实验室内置在语义模型工作空间内,通过语义模型连接的 数据源 来操作和查询数据。如果用户的数据源是公网访问的, 可以直接在元数分析云中创建数据源进行连接查询。如果用户的数据源是在内网私有化部署的,可以通过 桌面代理 进行连接查询。

查询实验室AI副驾驶
查询实验室AI副驾驶

接下来本文将介绍如何开启和配置 AI 副驾驶并使用其来辅助查询实验室中的数据 sql 查询、优化和解释。

开启和配置AI副驾驶

元数分析云的 AI 副驾驶 功能可以在网站配置里启用并配置相应的 openai key 或其他 AI 服务的 key。

用户通过第三方服务商获取的 AI 服务的 key,也可以配置在 AI 副驾驶中,并通过配置 API 主机地址来调用 OpenAI 的 api 服务。

查询实验室中的 AI 智能

现在,让我们看看在查询实验室中如何使用 AI 副驾驶来辅助编写、优化和解释查询语句。查询实验室中的 AI 副驾驶包含一系列基于 ChatGPT 的 AI SQL 使用功能,主要包括自然语言转 SQL、SQL 解释、SQL 优化和 SQL 转换。 使用这些 AI 功能,可以将自然语言转换成本地查询 SQL,而不仅仅是 SQL 查询伪代码;可以将 SQL 解释成自然语言,帮助用户理解复杂的 SQL;可以针对慢 SQL 提供全方位的优化建议,提升查询效率;可以转换不同数据库类型的 SQL 语言,降低数据库迁移难度等等。

在查询实验室中每一个查询界面就是一个 AI 副驾驶的会话,在查询保存时将会保存当前的会话记录,方便用户下次继续使用或查询历史对话。

可以将数据表区域里众多的表选取需要的表拖至查询的表结构区域,作为 AI 副驾驶会话的上下文信息,这样 AI 副驾驶就可以根据上下文信息来进行智能化的建议。

在查询实验室中,使用 AI 副驾驶有三种方式:

  1. 打开语义模型的 AI 副驾驶界面,在查询实验室界面时,AI 会话将会切换到查询实验室模式。用户可以基于当前上下文进行询问,AI 副驾驶将会根据上下文信息给出相应的 SQL 语句。
  2. 在查询编辑器中使用 AI 菜单,在编辑器中点击右键打开菜单,会看到 优化自然语言转SQL解释 三个 AI 菜单项,用户可以对当前编辑器中全部的或选中的 SQL 语句进行优化、转换和解释。
  3. 在编辑器工具栏中点击 AI 结对程序员🧑‍💻按钮打开输入框,输入任意提问或建议,AI 副驾驶将会根据上下文信息给出相应的 SQL 语句或优化结果,并将结果直接输出到编辑器中。

一:自然语言转SQL语句

在查询实验室中,您可以开始编写您的查询语句,无论是 SQL 查询还是自然语言描述。

查询实验室编辑器 AI 菜单
查询实验室编辑器 AI 菜单
  • 输入样例:关联 adv_reseller 和 adv_sales 和 adv_date 表并查询 'FY2020' 财年销售额最多的 reseller (排除 '[Not Applicable]')
  • 输出样例:
SELECT reseller.reseller_id, SUM(sales.sales_amount) AS total_sales
FROM adv_sales AS sales
JOIN adv_reseller AS reseller ON sales.reseller_key = reseller.reseller_key
JOIN adv_date AS date ON sales.order_date_key = date.date_key
WHERE reseller.reseller_id != '[Not Applicable]' AND date.fiscal_year = 'FY2020'
GROUP BY reseller.reseller_id
ORDER BY total_sales DESC
LIMIT 1;

鉴于一些细节的信息,用户可以自行调整结果语句,或者细化提问问题,以获得更精确的结果。

二:SQL优化建议

在编辑器中输入 SQL 语句或者选中已有的语句,点击编辑器右键菜单中的 优化,AI 副驾驶将会根据上下文信息给出相应的 SQL 语句优化建议并替换原语句。

查询语句 AI 优化
查询语句 AI 优化

AI副驾驶将根据最佳实践提供查询优化建议,以确保查询的性能最佳。

三:SQL解释

在编辑器中输入 SQL 语句或者选中已有的语句,点击编辑器右键菜单中的 解释,AI 副驾驶将会根据上下文信息给出相应的 SQL 语句解释并作为注释插入原语句上方。

查询语句 AI 解释
查询语句 AI 解释

四:自由提问

在查询的编辑器工具栏中打开 AI 结对程序员🧑‍💻按钮可以在输入框中输入任意提问或建议,AI 副驾驶将会根据上下文信息给出相应的 SQL 语句或优化结果,并将结果直接输出到编辑器中。

AI 自由提问
AI 自由提问

AI 副驾驶对话模式

查询实验室的 AI 副驾驶侧边栏对话框为对话模式,可以基于当前会话上下文对用户提出的问题做出智能的回答,相对于编辑器中的按钮菜单会话对话框可以使用持续对话的方式对一个问题进行连续的提问和回答,以便更好地理解用户的意图。

如下图如果对 AI 副驾驶的回答不够满意可以继续提问,增加对问题的描述和补充从而完善问题

AI 副驾驶对话模式
AI 副驾驶对话模式

要验证 AI 副驾驶的回答是否正确,可以复制 SQL 语句到编辑器中执行来查看结果正确性。

在对话框中点击某个问题可以重新编辑,然后重新提交问题。也可以删除某些对话内容,然后重新继续对话内容。

在查询保存时会将 AI 副驾驶的对话记录进行保存,以便用户下次继续使用或查询历史对话。

实际应用在线数据分析

为了更好地演示AI副驾驶的功能,让我们通过一个在线数据分析的实例来说明。

信息

在线数据分析可以通过 WASM 语义模型 来实现。WASM 模式的详细使用案例可以参考 使用 WASM 数据库做分析 一文。

本文我们使用 Global YouTube Statistics 2023 (A collection of YouTube giants) 数据集来做演示。

示例:最受欢迎的视频频道

提问global_youtube_statistics 请给出此表的分析建议:

回答

对于表 "global_youtube_statistics" 的分析建议如下:
分析流量数据:使用"video views"字段和"video_views_for_the_last_30_days"字段,可以分析视频观看量和最近30天视频观看量的变化趋势,找出受欢迎的视频和频道。
比较订阅量:使用"subscribers"字段和"subscribers_for_last_30_days"字段,可以比较总订阅数和最近30天的订阅增长情况,找出有潜力的频道。
地理位置分析:使用"Country"字段、"Abbreviation"字段、"country_rank"字段和地理坐标字段"Latitude"和"Longitude",可以分析不同国家的频道数量和流量排名情况,找出受欢迎的国家和地区。
频道类型分析:使用"channel_type"字段和"channel_type_rank"字段,可以分析不同类型的频道数量和受欢迎程度,找出热门的频道类型。
受众分析:使用"Population"字段、"Gross tertiary education enrollment (%)"字段、"Unemployment rate"字段和"Urban_population"字段,可以分析不同国家/地区的人口情况、教育程度、失业率和城市人口比例,帮助定位目标受众。
收益分析:使用"lowest_monthly_earnings"字段、"highest_monthly_earnings"字段、"lowest_yearly_earnings"字段和"highest_yearly_earnings"字段,可以分析频道的最低和最高月收入以及最低和最高年收入的范围,了解频道的盈利能力。

根据具体分析需求,结合以上字段和相应的分析函数,可以编写相应的 SQL 查询语句来进行数据分析。

继续提问使用"video views"字段和"video_views_for_the_last_30_days"字段,可以分析视频观看量和最近30天视频观看量的变化趋势,找出受欢迎的视频和频道:

回答

要分析视频观看量和最近30天视频观看量的变化趋势,并找出受欢迎的视频和频道,可以使用以下 SQL 查询语句:


SELECT "Title", "Youtuber", "video views", "video_views_for_the_last_30_days"
FROM "global_youtube_statistics"
ORDER BY "video_views_for_the_last_30_days" DESC
LIMIT 10;

以上查询语句将从 "global_youtube_statistics" 表中选取 "Title"、"Youtuber"、"video views" 和 "video_views_for_the_last_30_days" 字段,并按照 "video_views_for_the_last_30_days" 字段降序排序,最后限制返回前10个结果。这将展示出最近30天内视频观看量最高的视频和对应的频道信息。

执行以上 SQL 查询语句,可以得到如下结果:

TitleYoutubervideo viewsvideo_views_for_the_last_30_days
MusicMusic0NaN
GamingGaming0NaN
brightsideBRIGHT SIDE10708532224NaN
Luis Arturo Villar SudekLuisito Comunica8670473216NaN
NewsNews0NaN

...

继续提问排除 video_views_for_the_last_30_days 等于 NaN 的记录

回答

要在排除 "video_views_for_the_last_30_days" 字段等于 NaN 的记录的基础上进行分析,请使用以下 SQL 查询语句:


SELECT "Title", "Youtuber", "video views", "video_views_for_the_last_30_days"
FROM "global_youtube_statistics"
WHERE NOT("video_views_for_the_last_30_days" = 'NaN')
ORDER BY "video_views_for_the_last_30_days" DESC
LIMIT 10;

以上查询语句添加了一个条件,使用 NOT 运算符来排除 "video_views_for_the_last_30_days" 字段等于 NaN 的记录。其他部分与之前的查询语句相同,将返回最近30天内视频观看量最高的视频和对应的频道信息,同时排除了 NaN 值的记录。

执行以上 SQL 查询语句,可以得到如下结果:

TitleYoutubervideo viewsvideo_views_for_the_last_30_days
Happy LivesHappy Lives26346589000192
Dan-Sa / Daniel SaboyaDan-Sa / Daniel Saboya29081208326147999744
��������� KIMPRO��������� KIMPRO192067010563404000000
DaFuq!?Boom!DaFuq!?Boom!79061816322304000000
Calon SarjanaCalon Sarjana106645852292000000
T-SeriesT-Series2280000061442257999872

...

我们看到虽然按 video_views_for_the_last_30_days 字段降序排序,但是结果中的第一条记录的 video views 字段值却是很小,那么我们继续

继续提问要通过计算 "video views"字段和"video_views_for_the_last_30_days"字段值的相关性综合考虑找出最受欢迎的视频和频道:

回答

要通过计算 "video views" 字段和 "video_views_for_the_last_30_days" 字段值的相关性来综合考虑找出最受欢迎的视频和频道,可以使用以下 SQL 查询语句:


SELECT "Title", "Youtuber", "video views", "video_views_for_the_last_30_days"
FROM "global_youtube_statistics"
WHERE NOT("video_views_for_the_last_30_days" = 'NaN')
ORDER BY ("video views" * "video_views_for_the_last_30_days") DESC
LIMIT 10;

以上查询语句在之前的基础上,通过将 "video views" 字段和 "video_views_for_the_last_30_days" 字段值相乘,得到一个综合考虑了两者关系的排序依据。通过将乘积结果降序排序,并限制返回前10个结果,可以找出最受欢迎的视频和对应的频道信息。注意,同样地,NaN 值的记录会被排除在结果之外。

执行以上 SQL 查询语句,可以得到如下结果:

TitleYoutubervideo viewsvideo_views_for_the_last_30_days
T-SeriesT-Series2280000061442257999872
Cocomelon - Nursery RhymesCocomelon - Nursery Rhymes1640000061441975000064
SET IndiaSET India1479999979521824000000
Sony SABSony SAB1010000035841656999936
Zee TVZee TV731390525441707000064
Colors TVColors TV615109058561188000000

那么我们看到这样得到的结果将更加合理。

在这个过程中,AI 副驾驶提供了建议,帮助您优化查询,并解释结果,以便您更好地理解销售数据的含义。您还可以在查询编辑器中编辑查询语句,使用 AI 菜单对查询语句进行优化、解释和转换,以便更好地理解查询语句的含义。点击保存可以将整个查询过程记录下来,方便下次继续使用或查询历史对话。

总结

通过一个简单的在线数据示例,您可以看到 AI 副驾驶如何在查询实验室中为您提供智能化的支持,使您能够更快速、更精确地进行数据分析。除了在线数据分析,您还可以连接公网数据源或通过桌面代理连接内网数据源,对数据库中的数据进行智能化的查询分析。

在接下来的文章中,我们将更深入地探讨元数分析云的AI副驾驶功能,包括更多高级功能和用例。敬请期待!

附录