Logo

数据仪表盘

基于人工智能的数据分析与图表生成工具

# 能力简介

一款可编写查询语句、生成统计图表的工具,并支持分组展示图表,构建个性化的数据仪表盘。同时,借助腾讯混元大模型的AI能力,用户只需简单描述统计分析需求,即可快速准确地生成图表。该工具致力于让您的业务分析和商业决策更加简单和高效。

# 功能特性

  • 数据看板: 提供统计报表展示看板,聚合展示柱状图、折线图、饼图等各类图表,支持添加自定义看板分组。

  • 编写查询语句: 开发人员可手动编写查询语句,或修改 AI 生成的查询语句,进行数据的统计分析。

  • 会话式 AI: 描述数据分析需求,AI 自助生成查询语句,并渲染生成图表,实现数据可视化。

  • 打通云数据库: 支持快捷添加云开发环境的数据库集合,无需额外的数据库配置。

  • 多平台支持: 支持 PC、H5 端访问使用,外出办公依然从容实现数据分析。

# 快速上手

# 安装 数据仪表盘模板

  1. 访问云开发控制台 > 云模板 > 模板中心,安装数据仪表盘。

  2. 等待安装完成后,单击应用右上角的打开管理端,进入数据仪表盘应用,即可开始使用。

# 配置数据源

  1. 进行数据分析前,首先需要配置用于数据分析的云数据库集合。在数据仪表盘应用中,进入数据源管理模块,单击一键自动同步,全选当前云开发环境中的所有集合,单击确认,将集合导入到数据仪表盘应用中。

  2. 数据仪表盘应用会读取集合中前5条数据,分析数据结构和字段标识,用于后续的会话式 AI 分析。为了使输入的 prompt 能够更简单,AI 能够更准确的理解数据结构,需要对集合和其中的字段进行备注的补充。在数据源管理列表中,找到需要备注的集合,单击编辑,即可打开备注编辑界面。如下图所示,补充了订单集合和其中各个字段的备注,然后单击确认进行保存即可。

# 会话式 AI 分析

  1. 切换到 ChatDB 界面,输入想要统计的数据需求,AI 仅可分析生成查询语句,对数据进行汇总计算,生成表格。建议您采用以下提示词格式进行提问:

    序号 建议提示词 示例
    1 统计[集合标识]中的数据,统计维度为[字段A标识],统计指标为[字段A标识]的合计值/计数值/最大值。 统计order表中的数据,统计维度为customerName,统计指标为totalAmount
    2 统计[集合备注]中的数据,统计维度为[字段A备注],统计指标为[字段A备注]的合计值/计数值/最大值。 统计订单表中的数据,统计维度为客户名称,统计指标为下单金额的合计值
    3 分析[集合备注]中,不同[字段A备注]的数据,分别下单/购买/使用了多少[字段B备注]。 统计订单表中的数据,统计维度为客户名称,统计指标为下单金额的合计值
    4 [集合备注]表,按[日期类型的字段A备注]分析,每天每月分别下单/购买/使用了多少[字段B备注]。 订单表,按下单时间分析,每天分别下单的多少金额。
  2. 生成数据表格后,可回复想要的图表类型,生成所需的统计图表,目前支持的图表类型为:柱状图、饼图、折线图、面积图。

  3. 单击访问图表详情,可打开图表详情页,该页面可进行以下操作:

  • 图表共享:可将页面链接发送给其他团队成员。

  • 手动修改查询语句:如生成结果不符合预期,可修改下方的查询语句,然后单击生成预览,重新进行图表生成。

    说明:

    查询语句支持 MongoDB 标准的 aggregate 语句,完整语法说明请参见 db.collection.aggregate()

  • 切换图表类型,单击图表下方的切换按钮,可将图表切换为柱状图、折线图等其他图表样式。

  1. 生成希望收藏的图表后,回复收藏,即可将该图表收藏至数据看板 > 我的收藏中。

  2. 生成的图表会被自动记录保存在所有图表模块的历史会话中。

# 搭建数据看板

  1. 在数据看板界面中,可添加构建多图表聚合展示的数据看板,支持自定义看板分组,构建适用于不同场景的看板。

  2. 单击右上角的添加图表,可选:

  • 查询语句:即通过编写查询语句,生成图表,详细操作见下一节编写查询语句。

  • AI 生成图表:通过与 AI 会话生成图表,详细操作见上一节会话式 AI 分析,被收藏的图表默认展示于我的收藏分组中。

  1. 单击右上角的分组,可添加、编辑看板分组。

# 编写查询语句

# 语句编写入口

在数据看板界面中,单击添加图表 > 查询语句,可打开编写查询语句界面,填写查询名称、查询语句,单击生成预览,即可生成图表,切换到所需的图表类型,选择所需分组,单击确认即可保存该图表到对应分组下的数据看板。

# 查询语句写法

# 语法说明
  1. 查询语句支持 MongoDB 标准的 aggregate 语句。aggregate 是一个强大的方法,用于执行复杂的数据处理和分析操作。aggregate方法使用一个管道(pipeline)来处理数据,每个阶段(stage)在管道中执行特定的操作。

  2. 一个标准的 aggregate 语句格式如下:

    db.collection.aggregate([
      { $stage1: { /* stage1 operations */ } },
      { $stage2: { /* stage2 operations */ } },
      // ... more stages ...
      { $stageN: { /* stageN operations */ } }
    ], options);
    
  3. 查询语句完整语法说明请参见 db.collection.aggregate() ,以下提供基础说明和常用示例。

  4. 常见的 stage 及其用途:

  • $match:用于过滤文档,类似于 SQL 中的 WHERE 子句。

  • $group:用于分组文档,类似于 SQL 中的 GROUP BY 子句。

  • $project:用于重塑文档,选择和重命名字段。

  • $sort:用于排序文档,类似于 SQL 中的 ORDER BY 子句。

  • $limit:用于限制返回的文档数量,类似于 SQL 中的 LIMIT 子句。

  • $skip:用于跳过指定数量的文档,类似于 SQL 中的 OFFSET 子句。

  • $unwind:用于将数组字段拆分为多条文档。

  • $lookup:用于在集合之间进行左外连接,类似于 SQL 中的 JOIN

  1. 以下是一些示例,展示了如何使用 aggregate 方法来执行不同的操作。
# 示例 1:简单的 $match$group
  1. 假设我们有一个 sales 集合,包含以下文档:

    { "_id": 1, "item": "apple", "quantity": 5, "price": 10 }
    { "_id": 2, "item": "banana", "quantity": 10, "price": 5 }
    { "_id": 3, "item": "apple", "quantity": 15, "price": 10 }
    { "_id": 4, "item": "banana", "quantity": 20, "price": 5 }
    
  2. 我们想要按 item 分组,并计算每种 item 的总销售量。

    db.sales.aggregate([
      { $match: { item: { $in: ["apple", "banana"] } } },
      { $group: { _id: "$item", totalQuantity: { $sum: "$quantity" } } }
    ]);
    
  3. 输出:

    { "_id": "apple", "totalQuantity": 20 }
    { "_id": "banana", "totalQuantity": 30 }
    
# 示例2:使用 $project$sort
  1. 假设我们有一个 students 集合,包含以下文档:

    { "_id": 1, "name": "Alice", "score": 85 }
    { "_id": 2, "name": "Bob", "score": 90 }
    { "_id": 3, "name": "Charlie", "score": 80 }
    
  2. 我们想要选择 namescore 字段,并按 score 降序排序。

    db.students.aggregate([
      { $project: { _id: 0, name: 1, score: 1 } },
      { $sort: { score: -1 } }
    ]);
    
  3. 输出:

    { "name": "Bob", "score": 90 }
    { "name": "Alice", "score": 85 }
    { "name": "Charlie", "score": 80 }
    
# 示例 3:使用 $lookup 进行连接
  1. 假设我们有两个集合:orders 和 customers。

  2. 有一个orders 集合:

    { "_id": 1, "customerId": 1, "amount": 100 }
    { "_id": 2, "customerId": 2, "amount": 200 }
    
  3. 有一个customers 集合:

    { "_id": 1, "name": "Alice" }
    { "_id": 2, "name": "Bob" }
    
  4. 我们想要将 orders 和 customers 连接起来,获取每个订单的客户信息。

    db.orders.aggregate([
      {
        $lookup: {
          from: "customers",
          localField: "customerId",
          foreignField: "_id",
          as: "customerInfo"
        }
      },
      { $unwind: "$customerInfo" },
      { $project: { _id: 1, amount: 1, "customerInfo.name": 1 } }
    ]);
    
  5. 输出:

    { "_id": 1, "amount": 100, "customerInfo": { "name": "Alice" } }
    { "_id": 2, "amount": 200, "customerInfo": { "name": "Bob" } }