NL2SQL:解锁可视化数据分析的新姿势

1. 为什么需要NL2SQL?

在企业数据分析场景中,SQL是连接数据库的核心工具,但其语法门槛让非技术人员望而却步。自然语言转SQL(NL2SQL) 技术的出现,打破了这一限制。用户只需输入"帮我查一下本月产品销售额排名"这类口语化指令,系统即可自动生成对应SQL语句并返回可视化结果,大幅提升数据利用效率。

阿里云 AppFlow 平台通过DMS+百炼平台,将NL2SQL功能深度融入企业流程,助力用户实现:

  • 零代码数据查询:无需编写SQL,通过对话即可获取数据洞察
  • 多系统无缝集成:支持钉钉等办公场景的数据交互
  • 可视化结果展示:自动将查询结果转化为直观图表

2. 前期准备

  1. 将您的数据库使用阿里云DMS托管,如果没有,可以参考下列文档进行托管
  1. 预加载数据库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,用于创建钉钉连接流使用。

授予应用发送卡片消息权限

创建卡片后,您需要给应用授予发送卡片消息的权限。

  • 访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。
  1. 在左侧菜单选择开发配置 > 权限管理 ,在左侧搜索框分别输入Card.Streaming.WriteCard.Instance.Write,并在操作列点击申请权限

4.3 AppFlow连接流配置

步骤1:钉钉机器人:收到文本消息

  • 访问AppFlow控制台,在点击左侧菜单栏"连接流",选择"创建连接流",填写当前连接流的基本信息。
  • "选择触发事件",找到并点击选择"钉钉机器人",触发事件选择"收到文本消息时",点击"保存,进入下一步"。

步骤2:DMS数据管理:NL2SQL

  1. 搜索并选择"DMS数据管理"连接器,执行动作选择"NL2SQL",点击下一步
  2. 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色
  3. 在DMS页面可获取如下信息,从左到右依次为:数据库名、数据库连接地址、数据库连接端口号

|----------|--------------------|------------------------------|
| 参数名称 | | 示例 |
| 数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
| 数据库端口号 | 上图第三个红框值 | 3306 |
| 数据库名 | 上图第一个红框值 | app_001 |
| 问题 | 插入变量-节点1-会话消息-消息内容 | {{Node1.text.content}} |

  • 点击"+"进行下一节点配置

步骤3:DMS数据管理:执行SQL语句

  1. 搜索并选择"DMS数据管理"连接器,执行动作选择"执行SQL语句",点击下一步
  2. 添加鉴权凭证,按照界面提示选择符合要求的RAM角色,或新建RAM角色

|----------|-----------------|------------------------------|
| 参数名称 | | 示例 |
| 数据库连接地址 | 上图第二个红框值 | rm-xx.mysql.rds.aliyuncs.com |
| 数据库端口号 | 上图第三个红框值 | 3306 |
| 数据库名 | 上图第一个红框值 | app_001 |
| SQL查询语句 | 插入变量-节点2-生成的SQL | {{Node2.sql}} |

步骤4:阿里云百炼:百炼应用(流式)

  1. 选择"阿里云百炼"连接器,执行动作选择"百炼应用",点击下一步
  2. 根据前面步骤保存的API Key创建连接凭证
  3. 填写应用Id和Prompt提示词

|-----------|----------------|----------------------------------|
| 参数名称 | | 示例 |
| 应用ID | 百炼应用ID | 06d2daf4175145c4aed068f4af8c815a |
| Prompt提示词 | 插入变量-节点3-查询结果集 | {{Node3.rows}} |

步骤5:钉钉应用机器人:发送AI卡片消息

  1. 选择"钉钉应用机器人"连接器,执行动作选择"发送AI卡片消息"
  2. 使用在之前获取的钉钉应用的Client ID 和 Client Secret创建鉴权凭证
  3. 填写如下参数

|----------|------------------|--------------------------|
| 参数名称 | | 示例 |
| 模版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}} |

  1. 完成后点击完成并保存流程
  2. 选择发布连接流,复制 Webhook Url后续配置使用

4.4 配置钉钉机器人

  1. 访问钉钉应用列表。找到刚刚创建的应用,点击应用名称进入详情页面。

  2. 添加应用能力 页面,找到机器人卡片,点击添加

  3. 在机器人配置页面,打开机器人配置 开关,您可以参考下图完成配置。消息接收模式 请选择HTTP模式消息接收地址 为刚刚的 WebhookUrl 。然后点击发布

发布应用版本

应用创建完成后,如果需要将应用供企业内其他用户使用,需要发布一个版本。

  1. 点击应用开发 ,在钉钉应用 页面,点击目标应用。

  2. 在目标应用开发导航栏,点击版本管理与发布 ,在版本管理与发布 页面,点击创建新版本 。进入版本详情页面,输入应用版本号版本描述 信息,选择合适的应用可见范围 ,完成后点击保存 。并在弹窗中点击直接发布

  3. 完成后,在钉钉中搜索应用或将应用加入群聊即可与应用进行对话了

  4. 在钉钉群中@机器人,进行交流互动