造了一个 Chat BI:让业务人员用自然语言“对话”Excel 数据

https://gitee.com/exterior-and-interior-sha/chat-bi

这东西解决了什么问题

大多数企业内部的数据流转长这样:

  • 业务部门用 Excel 做记录,每天产生几十张表
  • 想查点什么东西 → 提需求给 IT → IT 排期写 SQL → 几天后拿到结果
  • 或者业务人员自己学 SQL,但能写 JOIN 的业务一只手数得过来

更麻烦的是,很多企业的数据根本不能上云。金融、医疗、政务,数据出不了内网。

市面上不是没有 Chat BI 方案,但要么是 SaaS 服务(数据得上云),要么是商业软件(贵),要么绑定特定云平台。

所以有了这个项目。


跑一遍完整流程

从用户视角看,整个系统就五个页面,走一遍就清楚它做什么了。

第一步:上传 Excel

打开数据管理页(/data),右上角"上传 Excel"按钮,拖拽或选择 .xlsx 文件。上传后后端做几件事:

  1. 用 EasyExcel 流式解析文件,逐列推断类型——数值列标DECIMAL(21,6),日期列自动识别常见格式,文本列标VARCHAR
  2. 自动生成 CREATE TABLE DDL,表名格式data_原始名_时间戳
  3. 通过 JDBC batch insert(每 1000 条一批)写入数据库
  4. 返回解析结果给前端展示

页面上会出现一张数据集列表,每一行显示:

字段说明
数据集名称可点击进入详情
行数导入的数据总量
文件名原始文件名
状态解析中 / 就绪 / 错误,用不同颜色 Tag 标识
导入时间格式化为YYYY-MM-DD HH:mm

每条数据后面有三个操作按钮:

  • 预览→ 进入详情页,展示字段列表(列名、类型、语义描述、空值数、示例值)和数据预览(前 50 行表格)
  • AI 分析→ 遍历每个字段,调用 LLM 推断语义,自动生成中文列描述(比如amnt→ “金额”),同时统计每列空值数量和数值列的 min/max/avg
  • 删除