如何用自然语言筛选报表数据

简介: 润乾报表推出汉语命令查询功能,支持自然语言筛选与排序数据。用户无需复杂参数操作,直接输入“发货日期上周”“客户名称含三”等口语化指令,系统自动解析为过滤条件或SQL宏;更可联动大模型(如DeepSeek)将模糊表达(如“华北订单”)智能规范化,大幅提升数据探索效率与体验。(239字)

如何用自然语言筛选报表数据
浏览报表时经常需要变更条件查看不同数据,通常可以借助参数模板实现。但参数较复杂时,传统参数模板操作繁琐、灵活性不足,而且也不太适应当前的AI时代。

润乾报表推出汉语命令查询功能,将参数模板升级为智能对话接口,用户只需用自然语言描述条件即可精准查询,无需反复操作控件,实现更加灵活高效的数据探索。

目前参数模板的汉语命令提供过滤和排序两种功能。实现过滤有两种做法,一是将汉语转换为参数传入报表实现过滤;二是将汉语翻译成表达式,作为宏传入报表。面对口语化的查询描述,它还可以和公共LLM配合规范化。让我们来看看怎么用起来。

一,汉语转换成参数

  1. 设计报表
    像平时做报表参数模板一样,我们需要先设计一个参数模板。例子中会对雇员ID、客户ID、发货日期进行汉语命令查询。这个模板需要包含web变量雇员ID,客户名称,发货日期。然后为他们生成对应的控件。
    0272ccee9f55be40299b3a5a0c1085a8_1775812856080100.png
    参数模板数据集展示
    aec566afeb3d7a948960089acdce13e9_1775812857058100.png
    9fa597be12e1964fdd8095c234100e9c_1775812857157100.png
    控件设计
    雇员下拉数据集

这里注意雇员ID这个控件我们显示列用了姓名,数据列用了雇员ID。这个控件会为汉语命令提供姓名-雇员ID的值映射。
f4d163cd82a7cffb58f1dc31dfa9d56f_1775812857264100.png
客户名称下拉数据集。ds2包含了雇员ID字段,因此使用汉语命令时候可以看到关联过滤的效果,下面会说到。
518811d0d7641078e13e2059ddbddeeb_1775812857359100.png
发货日期的日历控件
128f037cbb4e75283a6f279ee2f4f573_1775812857474100.png
添加默认参数雇员ID,值为1
b2807196b616f456096abfa368dbc686_1775812852738100.png
浏览报表设计
be7d11d3d060ecc6aeaec11c3cd057b1_1775812853202100.png
这里分组排序是为了展示内容方便说明,以及后续我们会用到排序,这里先不用关注。

浏览报表的数据集:
9018023f2ccf48931ea2c22b1023b63f_1775812853273100.png
237695b8ad02e790c9591e0d7979b5e6_1775812853367100.png
这个报表需要参数客户名称,发货日期和雇员ID

发货日期注意设置为日期类型
78d433564557ad82ba1bcc5c895dad0b_1775812853445100.png
准备完毕,现在可以预览带有参数模板的报表了。

  1. 预览查询
    完成制作后,使用汉语查询就非常简单,只要用showNLRFormReport.jsp预览报表,并在url中增加nlrQueryFields参数来设置筛选字段即可。
    3716d4ae13ca57a44211ea63d24d3f12_1775812853568100.png
    点击汉语,弹出输入框,可以开始输入了。

输入“筛选”,下面的帮助栏会显示可用的“数据项”,敲入数据项比如雇员ID,进而显示雇员ID的候选值。实际使用语句时参数名“筛选”可以省略。

54975ebac756536561aced48720cf325_1775812853676100.png

  1. 输入框的便利特性
    生成的候选值有几个特点:

根据参数模板设计的控件映射显示值。
我们的参数模板有控件雇员ID,显示值是姓名列,这里在过滤雇员ID时,显示的是姓名,实际查询时程序将为我们解析为雇员ID真实值。
9ac92256bf0de8ad21b629597810e7eb_1775812853788100.png
自带关联过滤。
输入过滤客户姓名时,根据当前查询参数雇员ID关联过滤的结果集。
25c5a905ec47a441e3d188223ad6a13d_1775812853893100.png
模糊查询
最多显示十个候选值,进一步输入时会模糊查询,更新帮助数据项
4f84044b358a6d02addeb829aa569e8b_1775812854028100.png

  1. 查询演示
    雇员ID等于张颖且客户名称等于兰格英语

75bf3a5ce847081a397a8c119fbdb9da_1775812854113100.png
添加条件,查询日期。“添加”命令把新的条件拼接到之前查询的宏上,而不是替换

添加条件发货日期是2025-02-28
01e8fb695e582f4268f0806d76b09401_1775812854226100.png
清除条件
4e44d1962476453dd8fa0abd6f6a5893_1775812854327100.png
这样可以回到访问报表初始的条件,相当于重置。重置参数为参数模板设置的初始参数。参数模板我们没有设置参数,这里就相当于全部置空了。

  1. 优点和不足
    我们可以看出来,这样设计报表和参数模板和原来的设计方法没有任何差别,只要配合nlrQueryFields参数开启功能即可。语句中的参数被正确解析到报表参数中。但这种查询就像控件选择一样,所有条件都类似“等于”的比较,条件之间都是“与”的关系。要变化查询条件,往往需要改变数据集的设置。

而下面汉语表达式转化为宏能极大丰富查询的条件。

二,汉语翻译成宏
宏可以直接用到报表SQL语句中,这样的用法我们可以实现更加灵活的、更复杂的查询。同时,前述输入框的便利特性,在这个用法中同样有效。

  1. 设计报表,更少的配置,更灵活的查询
    修改数据集,去掉数据集参数,将SQL写成子查询方便宏里使用中文别名,并在SQL增加where ${nlrMacro}。如下图。这个宏名称“nlrMacro”是固定的,不要修改。
    300a59d2bb5c0cc24001ae99174394d0_1775812854431100.png
    05ef54c06db2f4340212c721636c8407_1775812854525100.png
    a466b13836bbef74edf13394dc3c5c74_1775812854625100.png
  2. 预览查询
    类似地,还是在URL增加参数就可以了
    2c5d301f4ba1de6c7eb96f7a2d9c7761_1775812854697100.png
  3. 查询演示
    常规
    发货日期等于2025年3月
    f3b482da659048b809ea34eb5babe0e6_1775812854812100.png
    添加条件订单金额 1000到2000
    52ab27775a0864f52336c377f123a4a4_1775812854922100.png
    多条命令可以点击全部执行,串联执行所有命令,上面两个命令串联执行效果和逐个执行效果一致。

配合NLR得强大功能,我们还可以这样写命令:

日期处理
发货日期是去年本月
eaefe1f1e7593929dfec446d7b1eab3e_1775812855012100.png
复杂条件
发货日期是今年2月且城市是广东
30357de3801e683bbaf30e68a4f7c59c_1775812855115100.png
范围、多选
发货日期上周 城市属于 [ 北京,上海,广东 ]
67544c1074c7795685562a006a40f476_1e554df71739433dbe4d23310c39eb6f_image.png
模糊查询
客户名称包含三
a41d95cc1953cded71ce30bd15543d55_1775812855318100.png
执行清除条件最后仍然是可以来重置
36378ef9c5b7ea4ee51e672be8991793_1775812855410100.png
三,使用宏排序

  1. 设计报表
    报表的group、select函数是可排序的,动态切换的排序状态,需要动态的排序参数。

汉语命令给报表列排序,需要先给报表设置排序参数,并用于group、select可排序的函数。
e55287472688d9316b76cf0141441587_1775812855539100.png
修改A2 B2 C2,给报表函数增加排序,用宏填充
9ec8578f00f37d035dee8ce121481d38_1775812855631100.png
1f59bd23b64e95ce886bf33aac10ba01_1775812855697100.png
ee0e5299d853f1b0c2597f1b8ca88280_1775812855793100.png

  1. 预览报表
    浏览时,把报表排序可能用到的字段作为nlrOrderFields作为参数拼入url中,他们将在数据项中显示。
    af9716990e5eee73c51da1714e936828_1775812855876100.png
  2. 排序演示
    这个例子是一个分组报表,有雇员ID层、客户名称层和明细层。

订单ID、城市、发货日期、订单金额同属于明细字段,他们在客户名称层下,在客户名称组内排序。

排序订单ID降序
3c7532a325dd92802944859687a36d03_1775812855990100.png
同一层的排序互斥,下面对订单金额排序,订单ID的排序失效

排序订单金额从小到大

c1a48460dfc2a139aa2d41b7f5af71b5_1775812856151100.png
雇员ID降序
a22e7b6ad42cb6b6ca090cbdaddbdc2b_1775812856257100.png
此时明细层关于订单金额的排序状态保持。订单金额和雇员ID位于不同层,可以分别排序,图中点击全部执行和分别执行这两条效果是相同的。

客户名称降序
6adbb954df755060aa083f186b273bf9_1775812856354100.png
取消排序
8ee630ae71b25c866f44b04aa4de4b6c_1775812856444100.png
回到了初始的默认排序状态。

四,用LLM规范口语命令
目前汉语查询功能采用了小型的规则引擎,还不能识别非常灵活的口语命令,比如当我们使用“查询上周发货到华北的订单”等口语化描述查询数据时,规则引擎无法理解就会报错。这时候可以借助AI的能力,用LLM规范功能将口语化的命令转化为规范语句,继而被识别处理。

LLM规范的配置方法
只需在reportJsp/js/funcs.js文件中修改三个核心参数即可启用此功能:

llmUrl:填写所选大模型的API接口地址。

requestJSON:配置LLM的调用参数,如模型名称等。

keyFile:指定存储API密钥的本地文本文件名(如deepseek.txt),将对应服务的密钥存入该文件即可。
1bf5fb00ca4e90cd77cb76e5e3c23f87_1776818754250100.png
上图中我们配置了deepseek的API接口地址,配置了模型为deepseek-chat模型,以及最大token量等参数,并将自己的APIKey填入deepseek.txt文档,放在WEB-INF目录下。

LLM规范的效果
配置此功能后,访问例子:
输入
“查询上周发货到华北的订单”。
4348c180cfd63d26dc47ba0870dc803b_1776818754326100.png
LLM规范
点击LLM规范按钮
c805002360487512460f554c6cc6d692_1776818754424100.png
将查询描述、字段和提示词发送给配置好的LLM。
d75177300ab0afa3666629db842b83f8_1776818754498100.png
此截图日期为2026.4.17。

LLM自动将转换为上图规范后的命令:

上周发货到华北的订单【过滤 发货日期 大于等于 2026-04-07 且 发货日期 小于等于 2026-04-13 且 城市 属于["北京","天津","张家口","石家庄","秦皇岛"]】

执行
点击执行按钮,汉语命令引擎接收此结构化条件,完成查询
b007cf89a4add799b8f681e43eae87a1_1776818754562100.png
规范提示词
我们知道LLM模型工作中存在发散和创造的可能,要想让它返回的语句尽可能规范,就需要提示词来约束,让严格遵守明确的纪律。LLM规范执行时,会附带提示词,其中规定了AI应该怎么理解输入、处理,又怎么输出我们需要的汉语命令语句。

LLM规范分为两步:功能识别和规范化。

1,功能识别

定义在类路径根目录下的nlr-prompt-main.md文档中。AI阅读此文档后,理解输入并转换为功能名称。这部分提示词会被经常复用,不会附带数据项,以减少token消耗。

2,规范化命令

定义在类路径根目录下的nlr-prompt-func-paramform-filter.md(数据过滤)、nlr-prompt-func-paramform-order.md(字段排序)等文档中。根据第一步AI识别的功能,选中对应的md文档,AI阅读此文档后,理解输入并转换为规范化语句。

70c2500f5939f4e2c75080f2d699269e_1776818754653100.png
功能识别提示词nlr-prompt-main.md
内容概括:

1,输入定义:用户输入内容

2,功能识别规则:定义了AI的角色、工作清单和约束

3,输出定义:输出识别的功能名称

4,功能示例:识别功能举例

b74d82b144cef674b1b04c733d2a343c_1776818754779100.png
cccfaf65fc66883696df9b9359bcbbc5_1776818754844100.png
数据过滤提示词nlr-prompt-func-paramform-filter.md
内容概括:

1,输入定义:用户输入内容

2,功能识别:定义了AI的角色、工作清单和约束

3,规范转换规则:包括字段数据项、词典的构成、工作细则。

4,示例集附录:各种输入情况举例。

c9004e755749f20d6292f0903e7673ce_1776818754903100.png
字段排序提示词nlr-prompt-func-paramform-order.md
与上述过滤功能提示词相同。
010599f3c11e68f8d8849617596b2b14_1776818754968100.png
不同的大模型,对提示词的利用可能不同。如果遇到LLM执行结果不理想的情况,可以根据情况和LLM特征对这些提示词进行适当改动,帮助模型在目标场景下更好地理解怎样处理能输出用户想要的结果。

相关文章
|
8天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
3370 20
|
20天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
17857 60
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
1天前
|
SQL 人工智能 弹性计算
阿里云发布 Agentic NDR,威胁检测与响应进入智能体时代
欢迎前往阿里云云防火墙控制台体验!
1154 2
|
4天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
1785 8
|
15天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
3159 29
|
3天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
1416 3
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
4天前
|
机器学习/深度学习 缓存 测试技术
DeepSeek-V4开源:百万上下文,Agent能力比肩顶级闭源模型
DeepSeek-V4正式开源!含V4-Pro(1.6T参数)与V4-Flash(284B参数)双版本,均支持百万token上下文。首创混合注意力架构,Agent能力、世界知识与推理性能全面领先开源模型,数学/代码评测比肩顶级闭源模型。
1712 6
|
5天前
|
人工智能 测试技术 API
阿里Qwen3.6-27B正式开源:网友直呼“太牛了”!
阿里云千问3.6系列重磅开源Qwen3.6-27B稠密大模型!官网:https://t.aliyun.com/U/JbblVp 仅270亿参数,编程能力媲美千亿模型,在SWE-bench等权威基准中表现卓越。支持多模态理解、本地部署及OpenClaw等智能体集成,已开放Hugging Face与ModelScope下载。