返回正文目录

第九章筛选条件实操记录

日期:2026-10-19。正文:第九章。本轮只查询已建立的账单 QM,没有改动 TM/QM、数据或服务配置。

环境与实际执行

查询清单

所有请求位于 queries/chapter-09。query-manifest.json记录每个请求对应的校验、执行响应和本轮命令日志路径。每个请求先 validate,通过后才 execute;均成功、无分页截断。

请求 目的与实际结果
01-country-values.json 在账单 QM 中按 billingCountry 分组,返回 24 个国家值,含 USA、Canada。国家是普通属性,本次使用语义分组查询取值,没有调用仅适用于维度的 members 接口
02-usa-2012.json 日期范围与 USA 按 AND 组合,21 张账单,金额合计 127.98
03-two-countries-in.json 同年、美国或加拿大、单张金额大于 10;5 张账单:278、298、299、311、320,合计 74.43
04-two-countries-or.json 将 in 替换为显式 $or,其余条件保持不变,5 张账单及其字段完全相同
05-customer-having.json 全年所有国家客户分组求和,having totalAmount > 20,返回 5 位客户
06-single-invoice-over-20.json 全年单张金额 > 20,只返回账单 299,23.86
07-wrong-filter-before-sum.json 主动构造语义对照:先筛单张 > 20 再按客户累计,只返回客户 26,23.86;这是合法的另一问题,并非引擎校验失败
08-empty-range.json 1990 年日期范围,执行成功、返回空列表,不误报服务失败

累计金额超过 20 的完整结果:26 Richard Cunningham 25.84;34 João Fernandes 24.77;13 Fernanda Ramos 24.75;51 Joakim Johansson 24.75;55 Mark Taylor 22.77。结果恰与上一章 Top 5 相同,但本轮 limit 为 100,资格取决于 having。

本轮首次执行即通过,没有配置修复或查询错误。07 是主动构造的语义对照,不能写成 LLM 自然发生的错误。本文未声称日期为 1990 的问题在独立自然语言会话中的回答行为已验收。

独立验证

验证脚本只读读取 Invoice、Customer 原始行,用 Python 条件筛选、字典分组和 Decimal 求和,不以语义查询结果生成预期。

结果见baseline.json与acceptance.json。通过范围为现有教学账单模型上的筛选请求和实际数值,不包括独立干净会话、生产权限或浏览器问数。

已撤出正文的 SQL 参考试跑记录(2026-10-19)

新增两个同题物理 SQL:text-sql-two-countries.sql、text-sql-customer-having.sql,分别对照美加大额账单及客户累计金额筛选。复查能力和命名数据源连接后,通过公开 CLI sql query --file 只读执行,最多 100 行、5 秒超时,两份均成功且未截断。

结果与已有 DSL 响应逐行核对:两种查询各返回 5 行,ID、名称、日期、国家、金额及排序一致。金额按两位小数比较。报告见 text-sql-comparison.json,其中链接实际调用记录。

SQL 是当前 Codex 会话编写的同题参考样本,不是另一个 Text-to-SQL 系统独立生成的运行记录,也不构成两条路线的准确率或成本评测。按用户要求,这部分已从正文移除,且不再包含在本章常规复跑命令中;原 SQL、脚本和响应仅作为历史试跑资料保留。

复跑

服务和第八章模型就绪后,在 lab 目录执行:

python -X utf8 .\checks\collect-chapter-09.py
python -X utf8 .\checks\verify-chapter-09.py

采集脚本实时读取能力、连接、模型说明和国家值,再生成并逐一校验、执行请求。每次命令记录使用时间戳文件名,保留上一轮响应。无需重新建模、登记数据源或下载样例。

后续对比意图(暂不执行)

用户原意是尽量在相同条件下比较直接 Text-to-SQL 与经过语义层的生成、执行正确性,例如各运行 10 次,而非作者手写两份等价查询后比较结果。具体评测方案后续另议,目前不执行或安排此类对比。