2026-10-21 更新。基础实战篇当前安排为第 6—16 章,先把常用功能讲完;在线接入与高级系列随后规划正式章号。第 6—13 章已有正文,第十四章已获用户确认,第十五章字典与补充功能已实操、自审待阅,维护章顺延第十六章;第十一章本轮收紧为日期与月份汇总。
统一使用 Chinook,主线是“人提出目标并确认口径 → AI 通过 CLI 准备模型、查询和核对 → 人审阅”。以 Codex 本地任务为示例;提示词描述业务,完整命令和证据放 lab。
实战篇统一使用 Chinook v1.4.5 SQLite,围绕数字媒体商店的客户与账单分析展开,不再切换到其他样例。官方项目说明见 Chinook 数据模型。
本轮只读核对本地数据文件,共 11 张业务表:
| 业务范围 | 表 | 可以讲什么 |
|---|---|---|
| 客户与交易 | Customer、Invoice、InvoiceLine |
客户排名、账单汇总、头明细粒度及一对多关联 |
| 曲目目录 | Artist、Album、Track、Genre、MediaType |
内容分类分析,以及曲目到专辑、艺术家的多级关联 |
| 员工 | Employee |
客户负责人、员工上下级的自关联 |
| 播放列表 | Playlist、PlaylistTrack |
通过中间表连接播放列表与曲目的多对多关系 |
当前文件有 59 位客户、412 张账单、2240 条账单明细、3503 条曲目,规模适合本地讲解与逐步复核。先用五张核心表跑通主线,其余表按扩展问题引入,不要求一次全部建模。
Chinook 已有数据文件、许可与来源记录,练习使用副本。首批只探查 Customer、Invoice、InvoiceLine、Track、Genre 五张表,固定期间为 2012 年;同比、环比等时间分析留到高级篇。
这里的指标称“账单金额”:账单头使用 Invoice.Total,明细使用 UnitPrice × Quantity。先确认两者能否对账;不沿用技术篇的分转元、ISSUED 状态或人民币假设。国家分析统一按账单地址 BillingCountry,与客户地址分开。
计划分成两个查询面,具体名称和公开字段在实际建模后以 models describe 为准:
| 查询面 | 事实粒度 | 主要指标与维度 |
|---|---|---|
| 账单分析 | 一张账单 | 金额、账单数、平均账单金额;客户、账单日期、账单国家 |
| 明细分析 | 一条账单明细 | 明细金额、销售数量;客户、日期、曲目和内容分类 |
按内容分类分析使用明细金额,不直接累计关联后的账单头金额。利润、回款、退款和预测不在首批承诺范围内;需要相应数据和定义后再扩展。
读者提供练习目录并确认业务定义,Codex 读取 Skill、编辑模型、调用 Foggy CLI。Runtime 负责加载、校验和执行,Python 用于独立核对。正文不要求读者先掌握终端语法。
依赖 Python 3.11+、Launcher 所需 Java、CLI 与配套 Skill。安装从官方稳定清单与 Skill 指引获取,安装后记录实际组合。同一项目沿用已确认版本;既有教学入口已验证 Launcher 0.1.30 / CLI 0.1.25,旧章节记录保留当时版本,不冒充已全部重跑。
第六章仅接入数据,第七章探查,第八章创建语义模型。第十四章复用账单与明细 TM,新增两个关联 QM;第十三章权限样例保持独立 Namespace 和演示身份。Console/FAP 不作为基础功能练习的前置依赖。
| 章节 | 业务任务与功能 | 验收重点 |
|---|---|---|
| 第 6 章 认识 Foggy,准备第一个问数项目 | 安装 Skill/CLI/服务,下载 Chinook 副本并连接 | 版本、就绪、绑定与 11 张表;暂不建模 |
| 第 7 章 探查 Chinook 并确认业务口径 | 关系、粒度、日期范围、账单与明细金额 | 人确认字段含义,逐张对账,保存独立基线 |
| 第 8 章 生成语义模型并完成首次问数 | 先创建 TM/QM,加载后查询客户与分类 | 源码、实时元数据、DSL、结果和独立核对 |
| 第 9 章 筛选数据 | slice/having、AND/in/OR;文字、排除与空值 | 实际值、条件范围、筛选阶段;空值不等于零 |
| 第 10 章 聚合与计算指标 | 计数、去重计数、临时均额、固定指标、占比 | 指标粒度、分子分母、零分母;条件聚合 |
| 第 11 章 按日期与月份汇总数据 | 日期自维度、年月属性、范围与月汇总 | 跨年不混月、月度合计对回全年;时间比较迁高级篇 |
| 第 12 章 维度成员与多级关联 | 目录与成交成员、别名、下钻、排序分页 | ID/名称、上层范围、总数;结果去重和合计范围 |
| 第 13 章 查询范围与权限 | 模型、字段、行和成员可见范围 | 可信身份、同请求不同范围、明确拒绝,不等同生产 IAM |
| 第 14 章 在 QM 中关联多个 TM:普通 JOIN 与聚合 JOIN | 在一个 QM 内关联账单/明细 TM,再定义预聚合关联 | model/joins、聚合 relation、单 QM DSL、粒度与对账 |
| 第 15 章 用字典连接业务名称与数据取值 | registerDict、dictRef、实时字典元数据、原值与名称查询 | 24 国映射、7 项查询;标签转换与未知标签边界,数据库不变 |
| 第 16 章 模型维护与自动化回归 | 说明维护、校验刷新、数值及字典题库 | 当前基线与刷新后各 12 项查询、1 项拒绝通过,源码/数据未变;2 项回答审阅未执行 |
用户明确的范围是一个 QM 中 JOIN 两个 TM,包含模型中先聚合再 JOIN。此前误写的多个 QM Compose 组合已迁高级素材,不作为本章。
joins: [invoice.leftJoin(line).on(...)] 定义普通关联。groupBy(invoiceId).sum(...).count(...).as(...) 定义聚合关系,再与账单 TM JOIN,得到每账单一行。10 项查询完成独立核对;错误字段在查询校验拒绝,聚合 relation 的 INNER JOIN 在模型校验明确拒绝(0.1.30 仅 LEFT)。原三个查询回归通过。临时测试模型已移除,原八个建模文件和数据未变。详见本章新实操记录。
动态 Compose、CTE、复杂阶段计划与跨源 Memory Grid 留高级篇。
基础功能完成后,再接 Analytics Console/FAP,讲浏览器问数、连续追问与交接。沿用模型、业务定义和题库,分别验证页面、FAP 绑定与真实查询回调。在线章节暂不定号,不占用第十一至十三章。
| 层次 | 验证内容 |
|---|---|
| 固定查询 | 保存普通 DSL、模型与实际结果与原件独立基线,检查数值和范围 |
| 终端 AI 与 CLI | 保存自然语言问题、实际调用和回答,不能仅凭固定 payload 成功就算 AI 问答通过 |
| 浏览器与 FAP | 用新会话复核同一题库和连续追问,保留回调与结果,不用终端记录代替 |
正常、空结果、字段错误、含糊问题和身份范围分别记录。新会话未给期间时先澄清;不能因为教程常用 2012 年就自行补上。创建模型与查询分步,模型 Markdown 由引擎根据加载代码实时生成。