2026-10-25 更新。接高级建模与多维分析第 22—25 章,按 3 章,第 26—28 章组织。教学环境已升级 Launcher 0.1.42 / 项目 CLI 0.1.25,第 26、27 章原请求复跑通过;第二十八章完成实操、写作与自审,待用户审阅。
前面主要是在一个 QM 中表达查询。本系列处理“一个阶段的结果,还要交给下一阶段”的问题:先汇总、筛选或选定对象,再关联或继续分析。常用规则仍留在语义模型中,Compose 负责组织本次分析计划。
继续使用 Chinook 2012 年数据;不为介绍 Compose 先更换数据库。独立目录 lab/composition、Namespace chinook-composition、数据源 chinook-composition-sqlite,复用教学服务 http://127.0.0.1:18067。原库、原模型和其他 Namespace 不改,Console/FAP 不启用。
复用客户目录、账单和明细三个 QM 的语义定义,复制到独立教学 Bundle。先校验、加载,再实时获取元数据;Markdown 不预先手写。需要新字段时,创建和查询分开发送;已有字段直接使用。
Compose 使用受限脚本组织 dsl(...)、plan.query(...)、join(...)。CTE 是查询计划的组成方式,不代表每一步都把数据取回 AI,也不保证中间结果会持久化。当前 SQLite 预览已显示 WITH / 子查询及参数绑定;其他数据库不据此宣称验证通过。
业务问题: 先按客户汇总年度账单,再对汇总结果继续筛选;需要客户名称或保留无账单客户时,再关联客户目录。
dsl(...) 建立输入计划、plan.query(...) 使用上一阶段公开列。having,这里只用小例子认识阶段,普通汇总不必一律改写 Compose。查询提示词示意:“按客户汇总 2012 年账单,继续筛选金额至少为 10 的客户,再带上客户名称。”
已验证基础: 汇总结果再筛选 20 位客户;客户目录 LEFT JOIN 原账单 95 行,包含 83 张账单及 12 位无当期账单客户;先汇总账单再 LEFT JOIN 客户目录为 59 行。
正文当前结果: 第二十六章已补齐“筛选后带名称”的完整请求,逐阶段为 47 → 20 → 20 位客户;入选金额 344.84,完整目录 59 位、无当期账单 12 位、空结果与未输出字段拒绝均已核对。本章 5 项执行、1 项预期拒绝通过,见实操及读者复审。本章计数与前期备课计数分开。
业务问题: 对照每位客户的账单金额与明细金额,找出差异。
查询提示词示意:“分别按客户汇总 2012 年账单和明细,关联后核对金额差异。”
已验证基础: 两侧按客户聚合后关联得到 47 行;账单与明细总额均为 477.53,明细数量合计 447,各客户金额逐项一致。
正文当前结果: 第二十七章已完成。关联后用列内表达式计算差额,47 位客户的两侧总额均为 477.53;金额差异及双向未匹配为空。另用故意错配期间的查询验证 5 位已匹配金额差异、40 位未匹配,并反向检查。10 项执行独立核对通过,见实操、读者复审。探索时的两类派生接口边界单独保留,正文采用已通过的入口。
业务问题: 先找出年度金额最高的三位客户,再分析这些客户的账单或内容分类。
查询提示词示意:“找出 2012 年金额最高的三位客户,再看他们当年的账单。”
已验证基础: 前三客户 ID 为 26、34、13,对应 7 张账单;基础输入直接排序取 Top3、派生阶段取 Top3 两种形状结果一致,预览均保留输入 LIMIT 3。
正文当前结果: 第二十八章使用账单例子,不扩展内容分类。10 项执行通过:前三客户 26、34、13 对应 7 张账单、75.36;固定这三位客户改查 2013 年,INNER JOIN 返回 1 张、8.91,LEFT JOIN 保留三位。最终截断、前三张账单、空集合及基础 TopN 等变体均已独立核对,见实操与读者复审。
首次备课为 7 项成功执行、1 项无效关联键的预期拒绝,金额与集合通过原始只读 SQLite 行及 Decimal 独立核对。第 26—28 章分别为 5、10、10 项执行,计数独立保留。当前 0.1.42 升级与回归已完成,#163 / #164 已按修复合同验收;历史证据、模型、数据库和查询源码见实操目录。
非标准文件与多源分析、语义 SQL、性能专题仍按高级篇框架分别推进。WWI 继续贯穿适用专题,在案例确实需要时引入。