结果展示(Representation)

representation 指定查询结果的渲染方式,用于前端展示策略。该字段不影响 SQL 语义,仅影响结果的可视化形式。

类型定义

export type RepresentationType =
  // 基础图表
  | 'value'      // KPI 卡片
  | 'table'      // 表格
  | 'pie'        // 饼图
  | 'bar'        // 横向柱状图
  | 'column'     // 纵向柱状图
  | 'stackedColumn' // 堆积柱状图
  | 'line'       // 折线图
  | 'scatter'    // 散点图
  | 'area'       // 面积图
  // 高级图表
  | 'bubble'     // 气泡图
  | 'funnel'     // 漏斗图
  | 'guage'      // 仪表盘
  | 'heatmap'    // 热力图
  | 'histogram'  // 直方图
  | 'pareto'     // 帕累托图
  | 'radar'      // 雷达图
  | 'treemap'    // 树图
  | 'wordCloud'  // 词云
  | 'map'        // 地图
  // 其他可视化
  | 'entity'     // 实体详情卡片
  | 'report'     // 一张报告
  | 'text'       // 文本
  | 'videos'     // 视频列表
  | 'images'     // 图片列表

基础示例

KPI 卡片(value)

展示单个关键指标:

{
  "schema": "sales",
  "preds": [
    { "name": "总销售额", "operator": "$sum", "pred": "amount" }
  ],
  "representation": "value"
}

表格(table)

以表格形式展示多列数据:

{
  "schema": "orders",
  "groupby": [
    { "_id": "地区" },
    { "_id": "产品_品类" }
  ],
  "preds": [
    { "name": "销售额", "operator": "$sum", "pred": "amount" },
    { "name": "订单数", "operator": "$count" }
  ],
  "representation": "table"
}

柱状图(column)

适合展示分类对比:

{
  "schema": "sales",
  "groupby": [{ "_id": "地区", "name": "region" }],
  "preds": [{ "name": "销售额", "operator": "$sum", "pred": "amount" }],
  "sort": { "销售额": -1 },
  "representation": "column"
}

折线图(line)

适合展示时间趋势:

{
  "schema": "sales",
  "groupby": [{ "_id": "日期", "level": "day", "name": "date" }],
  "preds": [{ "name": "销售额", "operator": "$sum", "pred": "amount" }],
  "representation": "line"
}

饼图(pie)

适合展示占比关系:

{
  "schema": "sales",
  "groupby": [{ "_id": "产品_品类", "name": "category" }],
  "preds": [{ "name": "销售额", "operator": "$sum", "pred": "amount" }],
  "representation": "pie"
}

智能展示选择逻辑

本系统根据用户提问的特征,自动将数据类提问转化为以下三种展示方式:

明细列表(table)

触发条件:当用户提问涉及 schema 名称,且不包含任何指标(preds)时,展示明细列表。

典型场景

  • "显示所有订单"
  • "列出最近注册的用户"
  • "看看有哪些产品"

指标卡(value)

触发条件:当用户提问包含指标(preds),但不包含分组需求(无 groupby)时,展示指标卡。

典型场景

  • "总销售额是多少"
  • "统计订单数量"
  • "今天的活跃用户数"

图表(各种图表类型)

触发条件:当用户提问包含分组需求(存在 groupby)时,展示图表。具体图表类型根据数据特征进一步选择。

典型场景

  • "各地区的销售额排名" → 柱状图
  • "最近7天的销售趋势" → 折线图
  • "各品类的销售占比" → 饼图

图表选择建议

使用场景推荐类型
单个关键指标value
多维度明细数据table
分类排名对比column, bar
时间序列趋势line, area
占比分布pie
多指标相关性scatter, bubble
地理分布map
漏斗转化funnel
目标达成率guage
多维度对比radar
层级结构treemap

注意事项

  1. 自动推断:不指定 representation 时,系统会根据数据结构自动选择合适的展示方式。
  2. 数据匹配:某些图表类型要求数据结构必须匹配(如 map 需要地理维度字段)。
  3. 前端实现representation 仅是提示性字段,具体渲染效果由前端组件库决定。