NL2SQL:解锁可视化数据分析的新姿势
1. 为什么需要NL2SQL?
在企业数据分析场景中,SQL是连接数据库的核心工具,但其语法门槛让非技术人员望而却步。自然语言转SQL(NL2SQL) 技术的出现,打破了这一限制。用户只需输入“帮我查一下本月产品销售额排名”这类口语化指令,系统即可自动生成对应SQL语句并返回可视化结果,大幅提升数据利用效率。
阿里云 AppFlow 平台通过DMS+百炼平台,将NL2SQL功能深度融入企业流程,助力用户实现:
- 零代码数据查询:无需编写SQL,通过对话即可获取数据洞察
- 多系统无缝集成:支持钉钉等办公场景的数据交互
- 可视化结果展示:自动将查询结果转化为直观图表
2. 前期准备
1. 将您的数据库使用阿里云DMS托管,如果没有,可以参考下列文档进行托管
-
- 阿里云数据库导入DMS中 实例管理_数据管理(兼容数据库备份)(DMS)-阿里云帮助中心
- 他云或自建数据库录入 实例管理_数据管理(兼容数据库备份)(DMS)-阿里云帮助中心
2. 预加载数据库Schema信息
访问DMS控制台,左侧选择您的数据库实例。点击Copilot按钮,等待“数据初始化中”消失即可。此时,数据库NL2SQL将会按照您当前的数据库进行生成。
3. 整体流程介绍
4. 配置教程
4.1 百炼应用搭建
- 进入百炼控制台的应用列表,在页面右侧点击新增应用。在对话框中选择智能体应用,点击立即创建。
- 根据需要选择模型。模型参数无特殊需要保持默认即可。
- 复制如下Prompt到提示词框
# 角色
- 你是一个数据可视化分析专家,善于对人类给出的数据进行分析、整理以及可视化# 要求
- 仔细阅读和理解人类给出的数据库查询结果
- 根据数据特点选择最适合展示的图表类型,例如饼图、折线图、柱状图等各类图表
- 使用可视化图表工具生成图表# 数据示例
## [{"type":"研发","count":"56"},{"age":"产品","count":"44"}]
## 数据中每一个对象元素代表数据库查询结果的一行,Json对象的Key表示列标题,Value表示当前列的值
- 找到技能-MCP服务,开通并添加“AntV 可视化图表” MCP服务。
- 点击发布按钮
- 获取调用 API 所需的应用ID和API-Key。为了在后续通过 API 调用大模型应用的能力,我们需要获取一个百炼应用的 API-KEY 和应用 ID。
- 在应用列表中可以查看所有百炼应用 ID。保存应用 ID 到本地用于后续配置。
- 在我的API-KEY页面右侧,点击创建我的API-KEY,在弹出窗口中创建一个新 API-KEY。保存 API-KEY 到本地用于后续配置。
4.2 创建钉钉应用
创建应用
- 访问钉钉开放平台,点击上部应用开发。
- 在应用开发的左侧导航栏中,点击钉钉应用,在钉钉应用页面右上角点击创建应用。
- 在创建应用面板,填写应用名称和应用描述,上传应用图标,完成后点击保存。
查看应用 Client ID 和 Client Secret
在左侧菜单选择凭证与基础信息,复制 Client ID 和 Client Secret,用于下一步创建连接流。
创建消息卡片
钉钉机器人通过卡片消息支持流式返回结果,您需要创建卡片模板供消息发送使用。
- 访问卡片平台,点击新建模板。
- 在创建模板输入框,填入模板信息。
- 在模拟编辑页面,保存并发布模板。然后点击返回模板列表页面。
- 复制模板ID,用于创建钉钉连接流使用。
授予应用发送卡片消息权限
创建卡片后,您需要给应用授予发送卡片消息的权限。
- 访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。
- 在左侧菜单选择开发配置 > 权限管理,在左侧搜索框分别输入
Card.Streaming.Write
和Card.Instance.Write
,并在操作列点击申请权限。
4.3 AppFlow连接流配置
步骤1:钉钉机器人:收到文本消息
- 访问AppFlow控制台,在点击左侧菜单栏“连接流”,选择“创建连接流”,填写当前连接流的基本信息。
- “选择触发事件”,找到并点击选择“钉钉机器人”,触发事件选择“收到文本消息时”,点击“保存,进入下一步”。
步骤2:DMS数据管理:NL2SQL
- 搜索并选择“DMS数据管理”连接器,执行动作选择“NL2SQL”,点击下一步
- 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色
- 在DMS页面可获取如下信息,从左到右依次为:数据库名、数据库连接地址、数据库连接端口号
参数名称 | 值 | 示例 |
数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
数据库端口号 | 上图第三个红框值 | 3306 |
数据库名 | 上图第一个红框值 | app_001 |
问题 | 插入变量-节点1-会话消息-消息内容 | {{Node1.text.content}} |
- 点击“+”进行下一节点配置
步骤3:DMS数据管理:执行SQL语句
- 搜索并选择“DMS数据管理”连接器,执行动作选择“执行SQL语句”,点击下一步
- 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色
参数名称 | 值 | 示例 |
数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
数据库端口号 | 上图第三个红框值 | 3306 |
数据库名 | 上图第一个红框值 | app_001 |
SQL查询语句 | 插入变量-节点2-生成的SQL | {{Node2.sql}} |
步骤4:阿里云百炼:百炼应用(流式)
- 选择“阿里云百炼”连接器,执行动作选择“百炼应用”,点击下一步
- 根据前面步骤保存的API Key创建连接凭证
- 填写应用Id和Prompt提示词
参数名称 | 值 | 示例 |
应用ID | 百炼应用ID | 06d2daf4175145c4aed068f4af8c815a |
Prompt提示词 | 插入变量-节点3-查询结果集 | {{Node3.rows}} |
步骤5:钉钉应用机器人:发送AI卡片消息
- 选择“钉钉应用机器人”连接器,执行动作选择“发送AI卡片消息”
- 使用在之前获取的钉钉应用的Client ID 和 Client Secret创建鉴权凭证
- 填写如下参数
参数名称 | 值 | 示例 |
模版ID | 之前步骤创建的钉钉卡片模版ID | xxx-xx-xxx.schema |
机器人Code | 插入变量-节点1-机器人代码 | {{Node1.robotCode}} |
字段Key | content | content |
内容 | 插入变量-节点4-输出结果 | {{Node4.text}} |
群聊Id | 插入变量-节点1-会话ID | {{Node1.conversationId}} |
用户Id | 插入变量-节点1-消息发送人ID | {{Node1.senderStaffId}} |
- 完成后点击完成并保存流程
- 选择发布连接流,复制 Webhook Url 后续配置使用
4.4 配置钉钉机器人
- 访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。
- 在添加应用能力页面,找到机器人卡片,点击添加。
- 在机器人配置页面,打开机器人配置开关,您可以参考下图完成配置。消息接收模式请选择HTTP模式,消息接收地址为刚刚的 WebhookUrl。然后点击发布。
发布应用版本
应用创建完成后,如果需要将应用供企业内其他用户使用,需要发布一个版本。
- 点击应用开发,在钉钉应用页面,点击目标应用。
- 在目标应用开发导航栏,点击版本管理与发布,在版本管理与发布页面,点击创建新版本。进入版本详情页面,输入应用版本号和版本描述信息,选择合适的应用可见范围,完成后点击保存。并在弹窗中点击直接发布。
- 完成后,在钉钉中搜索应用或将应用加入群聊即可与应用进行对话了
- 在钉钉群中@机器人,进行交流互动