夜雨聆风学习资料网

ARTICLE · 1345688

AI接入应用中的报表查询:表模板 · 命令集 · 问数框

AI接入应用中的报表查询:表模板 · 命令集 · 问数框

AI接入应用中的报表查询:表模板 · 命令集 · 问数框

AI 只做它擅长的语义理解与步骤规划,真正的执行交给确定性引擎。位置选对了,AI 是产能;位置选错了,AI 是负债。

如果你在软件公司或企业的开发中心做行业应用——ERP、财务、供应链、CRM、政务系统——报表和查询是绕不开的功能。AI编程这么热,一个很自然的问题就是:这些事能不能用 AI 提效,让开发人员从无止境的排期里松一口气?

答案是能,但前提是先分清任务。业务方随口一句"做个报表查个数据",在工程上大概可以分成三种任务:固定报表、自助报表、通用查询。它们的交付物不同、代码重心不同,AI 该接在哪一段也完全不同。

先把结论放在前面:这三种任务都能用 AI 显著提效,但没有一种是"把数据和需求一起丢给大模型"。AI 的输出必须落到一个人能看懂、能改的中间物上——出了问题能定位,上线之后能维护。

本 文 脉 络

01  任务分解:三种功能,三种交付物02  固定报表:把 AI 接在"生成 API 调用程序"这一段03  自助报表:为什么不能把数据和需求直接丢给 AI04  通用查询:一个问数框,替代一堆查询界面05  三条路线的共同原则


01

任务分解:三种功能,三种交付物

"做个报表、查个数据"交给开发,其实是三件不同的事。三类方案共同的结构是:AI 只做语义理解与步骤规划,执行交给确定性引擎。

 固定报表 —— 交付一份报表模板

多级表头、合并单元格、斜线格、跨页小计、打印边距。开发者做给系统用,讲究的是形式。它的产物是"给人看、给人改"的模板,而不是只有机器才懂的渲染代码——所以最先能被 AI 改造。

 自助报表 —— 交付一个可嵌入的工具

最终用户是业务人员:想按省看、再按年拆、顺手算个占比。要做的不是替客户完成一次分析,而是交付一个业务人员能反复使用的能力。这类功能一旦做成黑盒,支持成本会迅速失控。

 通用查询 —— 交付一个框加一套元数据

订单、客户、库存各做一套筛选面板,加个条件就要改前端、调接口、发版本。通用查询把这些分散的查询收敛成一个输入框:用户自然语言提问,开发侧维护元数据、词典和查询服务。

表 1 · 三类功能的工程视角对比

项目

固定报表

自助报表

通用查询

交付产物

报表模板

可嵌入的自助分析页面

查询页面 + 元数据与词典

工作重心

模板布局、取数逻辑

命令集与执行引擎对接

元数据/词典/权限及接口

AI 介入点

生成调用 API 的 Java 程序

把口语拆成汉语命令

把口语转成规范问句

验收方式

IDE 里可视化审模板

分步执行、看中间结果

用户确认规范问句

失败模式

模板幻觉、渲染代码不可读

黑盒、算力与数据出域

关联与口径猜错且不报

注:AI 介入点那一行(蓝色)是三列里最关键的差别。

三种任务的差别不只是难度,而是"错在哪里、谁能发现、怎么改"——这决定了 AI 在每一类任务里应该站在什么位置。

02

固定报表:把 AI 接在"生成 API 调用程序"这一段

两条看起来可行的路,为什么都不通

✗ 路 一:让 AI 直接生成报表模板

报表模板是私有格式,公开语料几乎为零;多源混算、嵌套逻辑、像素级排版和打印设置交织在一起,不是一段线性文本能描述清楚的。硬让模型上,结果就是幻觉频发。

✗ 路 二:让 AI 直接写报表渲染程序

看起来更"工程":产出代码,编译运行。但它过不了上线这一关——渲染代码层层嵌套,报表稍复杂些就可能上万行,人读不懂就无法确认;报表需求又大多是临时性的,做完就改,指望测试集守住不现实。出了问题不知道错在哪一段,团队自然不敢用。

两条路的共同问题,是让 AI 直接产出"最终形态"。而最终形态恰恰是最难审、最难改的那一层。

可行方案:AI 写程序,引擎出模板,人在 IDE 里审

润乾报表的做法是把 AI 往后撤一步:不让它画报表,让它写一段调用 API 的 Java 程序,由引擎按 rpx 模板生成报表。链路是这样一条闭环:

图 1 · 固定报表的 AI 闭环

关键在中间这一层。那段 Java 代码往往很长、结构复杂,但你不需要读懂它——它的职责只是调用 API 把模板造出来。程序员真正要看、要改的,是它生成出来的 rpx 模板:在 IDE 里检查行列结构、分组层级、公式引用和数据源绑定,直接在格子上改。

也就是说,AI 产出的程序是"生成模板的手段",模板才是"可评审的产物"。评审发生在模板层,修改也发生在模板层;哪一格不对,在 IDE 里就能定位,不必回头读代码,也不必把整个生成过程重跑一遍。交付物是看得见的模板,而不是只能整体接受或丢弃的黑盒。

一条真实指令,能细到什么程度

中国式复杂报表的难点,往往不在取数,而在排版:分栏、横向流动、合并、跨页。现在可以先用自然语言把布局讲清楚,让 Agent 生成骨架。比如这条指令:

AGENT 指令示例

连接 demo 数据源,用销售额数据生成数据集并按销售额排序;一页排三组相同的列,序号、产品名称、产品销售额三列为一组,同一行并排显示 3 条记录(第 1 行是记录 1、2、3,第 2 行是 4、5、6);数据按记录顺序"横向流动"——不是一行一条往下扩展,而是从左到右、从上到下依次填充;最后生成指定的 rpx 文件。

图 2 · 横向流动布局示意(三组并列、按记录顺序填充)

图 3 · 执行结果: 三组并列、按记录顺序横向流动 (真实生成报表)

Copilot:最后一公里,用汉语改模板

Agent 生成的模板通常还差一点:某个单元格要做组内排名、单价要分段显示、颜色要按阈值变化。这些事继续交给 Agent 并不划算——它可能改好了这一处,又在别处搞出新问题。更合适的做法是直接在 IDE 上改:选中单元格,用汉语把需求说清楚。

图 4 · 在报表 IDE 中选中单元格,用汉语完成局部修改(实际操作截图)

这就是常说的从 GUI 到 LUI:不用记菜单路径,说一句话就改。但它和纯对话式产品有个重要区别——改动的结果仍然落在可视化模板上,改完立刻看得见,不存在"说完了不知道它改到哪儿去了"的问题。

给开发团队的几条建议

1 先审结构,再看结果。先看行列结构、分组层级、公式引用对不对,再跑数据。结构对了,结果大概率对;结构错了,跑出来再漂亮也是错的。

2 Agent 当骨架生成器,Copilot 做精修。复杂布局、批量相似的模板适合 Agent 一次成型;一次性小改动用 Copilot 更快。两者配合,才是完整的工作流。

3 把需求写成"布局规格"。"横向流动""一页三组"这类词对模型是有效约束;"好看一点""紧凑一些"没有信息量。描述越接近结构,返工越少。

50%+

复杂报表开发从小时级压到分钟级。但对程序员来说,真正省下来的往往不是"第一次做",而是"改"——需求变一次的成本降下来,才是长期的收益。

03

自助报表:为什么不能把数据和需求直接丢给 AI

现在把数据和需求一起交给 AI,它也能直接生成报表页面,那还有必要专门做一个自助报表功能吗?乍一看确实能出东西,但放进产品里用起来,通常会遇到三面墙:

黑盒  结果不对时,用户定位不到哪一步错、也无法只改一处,只能换个说法重来——本来对的地方可能又改错了。

算力 让模型直接吃数据、做推理,开销跟数据量走。企业没有多少算力余量,很难为一个查询功能长期兜账。

安全 频繁把业务数据送进大模型,若模型在公网,数据出域风险直接上桌面,很多行业根本不会讨论。

方案结构:口语进, 汉语命令出, 规则引擎执行

润乾报表的做法,是让 AI 把用户需求拆成一串可执行的汉语命令,再由规则引擎逐步执行。一句"订单金额超过 5000、按省份和年份分组汇总、再算省内金额比例环比、金额按货币格式"的需求,被拆成 7 步:

图 5 · 口语拆解为汉语命令序列,规则引擎逐步执行

这张图里最值得程序员注意的,不是界面,而是命令是有限集合、参数是结构化的。指令集越稳定,模型能"飘"的空间越小,你也越敢把它放进产品。

表 2 · 部分典型汉语命令族

命令类别

典型写法

作用

表头与维度

左表头 客户省 签单年

设定行、列维度的分组字段

数据过滤

过滤 订单金额 大于 5000

按条件筛选记录

聚合计算

订单金额 求和

生成指标值

组内跨行计算

在客户省 范围内   计算 订单金额 比例环比 命名为 省内金额比例环比

分区内的占比、环比、排名、累计

明细控制

隐藏全部明细

控制明细行是否展示

排序

排序 订购年 升序

结果排序

外观与格式

位置 订单金额 显示为   "#,##0.00"

数字格式、条件样式

注:命令族是有限集合,AI 的输出被约束在其中。

回看三面墙,这套结构正好一一接住:过程不再是黑盒——每一步命令都看得见、改得动,错了只改那一条,还能单独执行看中间结果;算力不再随数据量膨胀——AI 只做翻译和规划,不碰数据,消耗跟需求复杂度走,而不是跟数据规模走;数据不出私域——进模型的只有表样、字段和需求,业务数据始终留在自己的库里。

两种用法:单步执行与整体规划

单步执行

一步一步输入、一步一步执行、一步一步完善。适合调试和精细控制。

整体规划

把一段宏观需求整体交给 AI 拆解,再决定整体执行还是逐步执行。

对用户的价值在于排障粒度:拆错了,改的是某一条命令,不是推翻重来;某一步结果不对,单独执行那一步就能看到中间结果。这相当于给"自然语言做表"装了一个单步调试器——问题定位到步骤,而不是在一整段生成物里试错。

图 6 · 整体规划的执行现场:左侧报表随命令逐步生成,右侧为待执行的新命令(实际截图)

落地时要注意的工程点

1 指令集是你的契约。它连着提示词、连着历史数据、也连着用户的肌肉记忆。改指令集要像改 API 一样谨慎,最好有版本号。

2 数据不进模型。只把表样、字段和需求交给 AI,数据留在自己的库里。token 消耗比"让模型算数"低两个数量级,也自然绕开了数据出域。

3 每一步都要能单独执行。这是给业务用户的"退一步改一步",也是给你自己的排障能力。没有这一步,白盒就只是口号。

04

通用查询:一个问数框,替代一堆查询界面

做查询最贵的从来不是那个筛选框,而是重复:每个模块一套面板、一套接口、一套权限判断;需求一改就要改前端、联调、发版。界面长得都差不多,代码却要写很多遍。

市面上的 ChatBI,为什么大多落不进应用系统

形态重

多是独立的数据分析产品,自带登录、看板、管理后台。要嵌进业务系统,得打通账号、权限、数据、界面风格,工作量不亚于自研一套查询模块。

栈太重

主流方案是"大模型 + 向量库 + RAG 知识库"三件套,需要 GPU 服务器、专人做数据标注和提示词调优。为一个查询功能搭一整套 AI 基建,很难算得过账。

黑箱化

纯大模型生成 SQL 本质是概率猜测:简单查询看着准,一到多表关联、复杂口径就容易翻车;更麻烦的是错了也不报,照样返回一个看似合理的结果。

纯 AI 生成 SQL 的死穴

90% 的准确率,在业务用户这里等于 0

简单查询它确实做得不错——所以各类 Demo 的准确率都很好看。但真实业务查询大多是分组聚合、多表关联、条件组合,一旦涉及口径和关联关系,模型的猜测就开始翻车。业务用户不知道这一次是不是撞上了那 10%,看不懂 SQL,就没有能力核对。于是功能上线了,却没人敢用。这不是"准确率不够高",而是"无法验收"——两条性质不同的红线。

方案:规范问句 + 规则编译

润乾 NLQ 的链路是:业务口语 → AI 转译成一句语义规范问句 → 用户确认 → 规则引擎确定性地编译成 SQL → 执行返回。以"去年谁没开单"为例:

业务用户看不懂 SQL,但看得懂"去年没有订单的员工"是不是自己想问的。

图7 · 规范问句编译链示意 (口语→规范问句 → 确定性编译出SQL)

图 8 · 问数框运行现场:口语「去年谁没开单」→ 规范问句 → SQL → 结果(实际截图)

这条链路同时解决了三件事:业务用户能确认——他看不懂 SQL,但看得懂规范问句是不是自己想问的;关联与口径不靠猜——主表子表的存在性判断、JOIN 关系由元数据与规则层决定;结果可复现——确认之后是确定性编译。

AI 在这里的边界被划得很清楚:不懂表结构、不猜外键、不写 SQL、不做口径决策,只做语义转译。它只需要一个通用大模型的 API Key,不需要微调、不需要训练——对开发团队意味着,模型可以换,链路不用动。

从"每页做查询"到"一个组件 + 一套元数据"

表 3 · 传统查询界面与问数框的工作量对比

工作项

传统做法:每页一套查询界面

NLQ 方案:一个通用问数框

前端

每页一套筛选面板,条件变了改页面

一个标准输入框组件

后端

每页一个查询接口,逐个联调

统一查询服务,JDBC 调用

口径与关联

散落在各接口的 SQL 里

元数据与词典集中定义

权限

各接口分别实现,容易漏

继承系统原有权限体系

新增需求

改前端、调接口、发版本

加一条词典配置

接入方式按组件的标准来:标准 JDBC 驱动,加载 JAR 包、配置数据源、在代码里调用;前端就是一个输入框。核心是规则引擎,不需要 GPU、不需要向量库,普通 CPU 服务器就能跑。权限也不用另做一套:直接继承系统原有权限体系,不同岗位的人问同一句话,返回各自权限范围内的数据。

覆盖范围:不能只查"北京的订单"

只能处理简单条件筛选的问数,是玩具。通用查询需要覆盖四类查询范式,再加上取数之后的跨行运算,才能覆盖绝大多数常用需求:

表 4 · 通用查询需要覆盖的查询范式

查询范式

典型问题

技术要点

单表明细筛选

上周发往华北地区的订单有哪些

条件过滤与明细返回

单表聚合排名

各省订单金额排名

分组、聚合、排名

主子实体关联过滤

上个月没有开单的员工

主表与子表的存在性判断

多维对齐汇总

按省份、年份汇总并计算

多维交叉统计

跨行运算

占比环比排名

针对结果集做跨行计算

多表 JOIN 不交给 AI 猜,由规则引擎按元数据自动计算。这既是准确率的来源,也是你能向客户解释"为什么这次和上次一样"的依据。

元数据可以交给智能体生成

做问数最重的一块其实不是查询本身,而是元数据:表结构、字段映射、汉语词典、口径定义、提示词。过去靠熟手一点点配,一个主题域动辄一两天。现在可以把这条流水线交给智能体:连库读表结构、生成 DQL 元数据、构建汉语词典、编写提示词、配置数据源、Web 上线、JDBC 真连真查——人只在每一步做确认。

数周 → 几天

原本数周甚至上周的元数据配置工期,现在一两天就能跑通。形态上是 MCP 一体化服务:既能被智能体当工具调用,也能配 SKILL 端到端搭建。维护也轻——新增业务加一条词典配置,普通开发就能做。

落地边界:不是所有查询界面都该删

从实践看,最优组合是"问数框为主、高级筛选为辅":

✓ 可以替代

临时多变的条件筛选、各类分组汇总排名、突发的非标准化查询。这类需求等开发排期最不划算,直接问就出结果。

→ 建议保留

极高频的固定操作(点按钮比打字快)、强引导型的新手场景、极复杂的多步深度分析——还是走原来的功能入口更顺手。

05

三条路线的共同原则

把三种方案放在一起看,会发现结构是同一个:AI 做语义与规划,引擎做执行,只是中间物不同。

中间物分别是:rpx 模板 · 汉语命令序列 · 规范问句 —— 共同点是人都看得懂、能改

三条路线收敛到同一结构

中间物必须是人能看懂、能改的东西

这不是为了某个理念,而是为了两件很实际的事:出了问题你能定位,上线之后你能维护。凡是 AI 直接产出最终形态的方案,都会在这两件事上付出代价。

成本要算全

算力、token、数据出域、支持人力,四项里任何一项失控,功能都活不长。把模型当翻译器而不是计算器,成本差两个数量级。

形态要组件化

开发商交付的是系统的一部分,用户不该为此跳转到另一个产品;能不能嵌、能不能连、能不能管、能不能养,比功能列表更重要。

结 语

报表行业过去解决过两个问题:能不能做出中国式复杂报表,数据准备能不能从报表里解耦。现在多了新问题:如何利用 AI 提效?AI 生成的东西,怎么才能放心地放进生产?

润乾报表的路线一直没变:把 AI 的输出落到一个确定的、人能改的中间物上。对开发商来说,这意味着三件事可以分开做、按需做——固定报表用 Agent 加 Copilot,自助报表用汉语命令加规则引擎,通用查询用规范问句加一个问数框。

不必等一个"万能方案"。把 AI 放对位置,三类功能都能在自己的应用里先跑起来。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料