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.Write和Card.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. 在钉钉群中@机器人,进行交流互动