Text-to-SQL与Analytics-Agent

Text-to-SQL 与 Analytics Agent · 企业落地

定位 :在 27-Agent参考架构 七视图 母版下,专述 自然语言 → 可执行 SQL / 语义指标 的 Analytics Agent 生产架构------覆盖 Schema Linking、语义层(dbt Metrics / Headless BI)、SQL 沙箱、行列级安全、成本封顶、Golden Set、幻觉 Join、审批流与审计。

不重复 :Agent 通用控制面见 27 §3;RAG 管线见 03;ReAct/Tool 见 04;治理见 17;考前冲刺见 98

数据底座 :执行引擎与优化器语境见 MySQL 套件PostgreSQL 套件


导航 · 套件内关联

类型 文件 本篇用法
结构母版 27 七视图 §1--§8 章节映射
前置必读 03 RAG Schema/文档检索、Hybrid
前置必读 04 Agent ReAct、Tool Router、MCP
前置必读 17 治理 四层防御、审计字段
深链 06 Eval Golden Set、faithfulness
深链 07 Serving Token FinOps、路由
深链 13 Playbook 12 能力域、HITL
深链 21 部署指南 Checkpoint、幂等
冲刺 98 高频题 §4 新增 T2SQL 题锚点
MySQL mysql/05 SQL优化 EXPLAIN、索引
MySQL mysql/08 锁 长查询风险
PG postgres/06 Planner 代价模型
PG postgres/03 MVCC 只读副本语义

0. 面试前 30 分钟 Checklist(Staff / Architect)

时间盒 动作 产出
5 min 七视图一句话(§1.2) Analytics Agent 与通用 Agent 差异 3 点
5 min 白板 应用视图(§3) NL→Link→Gen→Validate→Execute→Explain
5 min 语义层三层(§3.4) 物理表 / dbt 模型 / Headless 指标
5 min 口述 安全三板斧(§6) 沙箱 + RLS/CLS + 审批
5 min 准备 1 个 STAR-M-P(§12) 幻觉 Join 或越权查询
5 min Master P0(§13)标红 3 项 Golden Set + cost cap

开场金句(90s)

「Analytics Agent 不是 ChatGPT 接 JDBC,而是 带副作用的只读/受控写查询控制器。我用七视图讲:业务上服务谁、能否自动执行;应用上 Schema Linking + 语义层 + SQL 沙箱;数据上元数据与 Golden Set;部署上沙箱集群与只读副本;安全上行列级策略与审批;集成上 dbt/Headless BI/数仓;演进上从 Copilot 到自治查询的分期。」


1. 七视图方法论(Analytics Agent 特化)

1.1 与 27 的映射

27 视图 Analytics Agent 核心问题 本篇章节
业务 谁问、问什么、能否自动跑 SQL §2
应用 Linking / 生成 / 校验 / 执行 §3
数据 元数据、指标、Golden Set §4
部署 沙箱、只读副本、资源隔离 §5
安全 RLS、CLS、审批、审计 §6
集成 dbt、Cube/MetricFlow、BI §7
演进 Copilot → 半自动 → 受控自治 §8

1.2 七视图一句话速记

# 视图 核心问题 Analytics 关键词
1 业务 价值与边界 自助 BI、运营问数、禁止 DDL
2 应用 怎么生成可信 SQL Schema Linking、语义层、Validator
3 数据 元数据与评测 DDL 快照、血缘、Golden Set
4 部署 怎么安全执行 SQL Sandbox、只读、超时
5 安全 怎么防越权 RLS/CLS、mask、审批
6 集成 怎么接存量 dbt、Headless BI、Trino
7 演进 怎么分期 建议 SQL → 人批 → 自动

1.3 视图依赖总图

flowchart TB BV[&#34;业务视图<br/>场景 / 角色 / HITL&#34;] AV[&#34;应用视图<br/>Link / Gen / Validate / Execute&#34;] DV[&#34;数据视图<br/>元数据 / Golden / 血缘&#34;] DEP[&#34;部署视图<br/>Sandbox / RO Replica&#34;] IV[&#34;集成视图<br/>dbt / Headless BI / 数仓&#34;] EV[&#34;演进视图<br/>Copilot → Governed Auto&#34;] SV[&#34;安全视图<br/>RLS / 审批 / Audit&#34;] BV --> AV BV --> DV AV --> DV AV --> DEP DV --> DEP AV --> IV IV --> DEP EV -.->|约束| AV & DEP SV -.->|贯穿| BV & AV & DV & DEP & IV

Staff 白板顺序(45min):业务(5m) → 应用(12m) → 安全(8m) → 数据(5m) → 集成(5m) → 部署(5m) → 演进(5m)。


2. 业务视图(Business View)

2.1 场景矩阵

场景 用户 数据域 副作用 默认模式 HITL
运营自助 运营/PM 订单/流量 ODS 只读 SELECT 建议 SQL + 一键执行 敏感指标二次确认
财务月结 FP&A 总账/收入 只读 + 导出 仅建议 SQL 全量执行需审批
数据科学 DS 特征宽表 只读 + 临时表禁 Copilot 禁止 CREATE
客服洞察 客服主管 工单/会话 只读 RAG+指标 PII 列脱敏
高管问数 C-level 语义指标 只读 Headless NL→指标 API 无原始 SQL 暴露

2.2 价值流

sequenceDiagram participant U as 业务用户 participant A as Analytics Agent participant SL as 语义层 participant SB as SQL Sandbox participant H as 数据审批人 U->>A: 自然语言问题 A->>SL: 解析指标/维度 A->>A: Schema Linking + 生成 SQL alt 高风险 A->>H: 提交 SQL + 解释 + 预估成本 H-->>A: 批准/修改 end A->>SB: 执行(只读角色) SB-->>A: 结果集(行数上限) A-->>U: 表格 + 图表建议 + 血缘脚注

2.3 验收标准(机器可验)

维度 指标 门槛示例
正确性 execution_accuracy Golden Set ≥92%
安全 policy_violation_rate 0(越权即事故)
成本 p95_scan_gb / p95_latency 按租户配额
可解释 metric_citation_rate 100% 走语义层指标
体验 first_correct_sql_rate ≥75% 无需人工改 SQL

2.4 业务反模式

反模式 现象 修复
直连生产写库 Agent 用 RW 账号 只读沙箱 + 拒绝 DDL/DML
无角色差异 客服能查薪资 RBAC + 列掩码
「感觉对了」 无 Golden Set 发布门禁 + 回归
无限扫表 一次查询打满集群 cost cap + EXPLAIN 预估

3. 应用视图(Application View)

核心 :Staff 面试停留最长。必须画清 NL → Schema Linking → SQL Gen → Static Validate → Policy → Sandbox Execute → Explain 七段流水线,以及 语义层优先、物理表兜底

3.1 参考架构总图

flowchart TB subgraph Ingress[&#34;接入&#34;] GW[Analytics Gateway / BFF] CHAT[Slack/飞书/BI 嵌入] end subgraph ControlPlane[&#34;控制面&#34;] AUTH[身份 / 租户 / 角色] POL[Policy OPA: 表/列/行] BUD[Cost Cap: rows/bytes/timeout] APR[审批队列 HITL] IDEM[幂等: question_hash] end subgraph DataPlane[&#34;数据面&#34;] RT[Analytics Runtime] INT[Intent + 指标解析] LINK[Schema Linker] GEN[SQL Generator] VAL[SQL Validator] EX[Explain + 可视化] SB[(SQL Sandbox Executor)] end subgraph Knowledge[&#34;知识平面&#34;] SEM[语义层 dbt/Headless] MD[元数据 Catalog] RAG[RAG: 文档/口径/FAQ] GS[Golden Set Runner] end GW & CHAT --> AUTH AUTH --> POL --> BUD --> IDEM IDEM --> RT RT --> INT --> LINK INT --> SEM LINK --> MD & RAG LINK --> GEN --> VAL VAL --> APR APR --> SB SB --> EX GS -.-> VAL

3.2 组件契约与 SLA

组件 职责 p99 延迟 失败降级
Intent NL→指标/维度/时间范围 <2s 澄清问题模板
Schema Linker 表/列/Join 路径候选 <3s 缩小到 star schema 子图
SQL Generator 生成 ANSI SQL <8s 降级小模型 + 模板
Validator 语法/表列白名单/Join 图 <500ms block 执行
Sandbox 执行只读 <30s 返回采样+「已截断」
Approval 人审高危查询 SLA 4h 超时拒绝非 P0

3.3 Schema Linking(模式链接)

定义 :将自然语言中的实体(「上周华东 GMV」)映射到 语义指标物理表.列 ,并推断 Join 路径

flowchart LR Q[用户问题] --> NER[实体识别<br/>指标/维度/过滤] NER --> CAND[候选生成<br/>向量+关键词+血缘] CAND --> RANK[重排序<br/>交叉编码器/规则] RANK --> GRAPH[Join Graph<br/>最短合法路径] GRAPH --> CTX[压缩 Schema Context<br/>≤8k tokens] CTX --> LLM[SQL Generator]
技术 作用 03 RAG 关系
表/列 Embedding 相似表召回 同 Hybrid 检索
Join 图索引 预计算 FK 路径 图算法,非向量
口径文档 RAG 「GMV 是否含取消」 chunk=指标定义
Few-shot 同域 SQL 样例 tenant+domain 过滤

Linking 输出契约

json 复制代码
{
  "metrics": ["gmv_net"],
  "dimensions": ["region", "dt"],
  "filters": [{"field": "dt", "op": "between", "value": ["2026-05-13","2026-05-19"]}],
  "tables": ["fct_order", "dim_region"],
  "join_edges": [{"left": "fct_order.region_id", "right": "dim_region.id", "type": "inner"}],
  "confidence": 0.87,
  "schema_context_rev": "dbt_20260520_1430"
}

反模式 :把 500 张表 DDL 全塞 prompt;无 Join 图导致 幻觉 Join(§10.3)。

3.4 语义层:dbt Metrics / Headless BI

层级 产物 Agent 用法 人读
L3 Headless Cube/MetricFlow/LookML 指标 query({metrics, dimensions}) 业务友好
L2 dbt staging→mart + metrics YAML 编译 SQL 或指标 API 数据团队
L1 物理 ODS/DWD 宽表 Linking 兜底 DBA
flowchart TB NL[自然语言] --> MR[Metric Resolver] MR -->|命中| API[Headless API<br/>Cube/MetricFlow] MR -->|未命中| DBT[dbt 编译 SQL] DBT --> PHY[物理表 SQL] API --> SB[Sandbox] PHY --> VAL[Validator] --> SB

为什么语义层优先

  1. 口径唯一 :「GMV」在 Agent 侧是 gmv_net 指标 ID,不是自由文本。
  2. Join 预封装 :metrics 已绑定 join_path,大幅降低幻觉 Join。
  3. 权限对齐 :Headless 自带 member-level security ,与 17 一致。
平台 集成方式 Agent Tool 形态
dbt + MetricFlow mf query / Semantic Layer API tool: semantic_query
Cube REST /load tool: cube_load
Looker LookML + API 嵌入 Explore 受限
Apache Superset 数据集语义 次选,口径弱于 dbt

3.5 SQL 生成与静态校验

生成策略(生产推荐)

阶段 方法 说明
1 指标 API 优先 能解析为 metrics 则不生成裸 SQL
2 模板 + 槽位 高频问法「分渠道 GMV」→ Jinja 模板
3 LLM 补全 仅填充 WHERE/时间,Join 来自 Linker
4 DIN-SQL / MAC-SQL 研究范式,需 Validator 兜底

Validator 必检项(执行前硬闸门):

text 复制代码
1. 语句类: 仅允许 SELECT / WITH;拒绝 DDL/DML/多语句/注释注入
2. 表白名单: FROM/JOIN 表 ∈ role_allowed_tables
3. 列黑名单: 拒绝 salary, id_card_hash 等
4. Join 图: 每条 JOIN 边 ∈ approved_join_graph
5. 分区裁剪: 事实表必须有 dt 过滤(可配置)
6. 成本预估: EXPLAIN 扫描行数/字节 > cap → 转审批
7. 结果上限: LIMIT ≤ N(默认 10_000)

→ MySQL EXPLAIN 见 mysql/05;PG 见 postgres/06

3.6 SQL Sandbox(执行沙箱)

flowchart TB subgraph SandboxCluster[&#34;沙箱集群(与生产隔离)&#34;] PX[Proxy SQL Parser] RO[(只读 Replica<br/>MySQL/PG/Trino)] WH[(Snowflake/BQ<br/>只读 WH)] end VAL[Validator OK] --> PX PX -->|改写 LIMIT/timeout| RO & WH RO --> RS[结果集脱敏] RS --> AG[Agent 格式化]
控制项 MySQL 实现 PostgreSQL 实现
账号 agent_ro@% 仅 SELECT agent_ro + SET ROLE
超时 MAX_EXECUTION_TIME statement_timeout
资源 独立 Replica + 并发队列 只读池 + pg_bouncer
网络 安全组仅沙箱→副本 同 VPC 无生产写端点

反模式 :Validator 与 Executor 之间无 二次解析 ;沙箱与生产 同库不同账号 仍可能拖垮主库------推荐 物理隔离副本

3.7 控制面:Cost Cap(成本封顶)

维度 配置示例 触发动作
单次 max_scan_gb=50 EXPLAIN 超限→审批
单次 max_rows=10000 自动 LIMIT
单次 wall_timeout=30s Kill + 错误码
用户日 daily_scan_tb=2 拒绝或排队
租户月 monthly_cost_usd=500 FinOps 告警
stateDiagram-v2 [*] --> Estimate Estimate --> AutoRun: under cap Estimate --> NeedApproval: over cap soft Estimate --> Rejected: over cap hard AutoRun --> Executed NeedApproval --> WaitingHuman WaitingHuman --> Executed: approved WaitingHuman --> Rejected: denied Executed --> [*] Rejected --> [*]

27 §3.3 预算 对齐:max_cost_usdLLM token + 数仓扫描

3.8 审批工作流(Approval Workflow)

风险级别 条件 流程
L0 语义层指标 + 命中缓存 自动执行
L1 物理 SQL + 成本<阈值 自动 + 异步审计
L2 宽表 Join / 接近 cap 数据 Owner 审批
L3 新 Join 边 / 敏感列 安全+Owner 双审
L4 跨域 PII 拒绝或脱敏副本
sequenceDiagram participant A as Agent participant Q as 审批队列 participant O as 数据 Owner participant SB as Sandbox A->>Q: submit(sql, explain, cost_est, lineage) O->>Q: approve / edit_sql / reject Q->>A: decision + audit_id A->>SB: execute approved_sql only

04 HITL 对齐 :审批是 人类 Tool,写回 checkpoint;禁止 Agent 自行修改已批 SQL 再执行。

3.9 应用视图反模式

反模式 风险
跳过 Linking 直接生成 幻觉表名/Join
语义层与物理口径并存无映射 双 GMV
Validator 只做字符串黑名单 绕过 UNION SELECT
审批后执行不同 SQL 审计失效

4. 数据视图(Data View)

4.1 逻辑数据模型

erDiagram QUESTION ||--o{ LINK_RESULT : produces QUESTION ||--o{ SQL_DRAFT : generates SQL_DRAFT ||--o| EXECUTION : becomes EXECUTION ||--o{ RESULT_SAMPLE : returns TENANT ||--o{ ROLE_POLICY : has GOLDEN_CASE ||--o{ REGRESSION_RUN : tracks SCHEMA_SNAPSHOT ||--o{ JOIN_GRAPH : versioned QUESTION { string question_id PK string tenant_id string nl_text string user_role } SQL_DRAFT { string sql_hash json version_pin string status } EXECUTION { string audit_id bigint rows_scanned float cost_units }

4.2 Golden Set(金标准评测集)

字段 说明
case_id 稳定 ID
question 自然语言
gold_sqlgold_metrics 可执行标准答案
gold_result_hash 结果集指纹(防优化器差异)
domain 订单/供应链/财务
risk L0--L4
tags join2hop, window_fn, yoy

三类评测

类型 指标 用途
Exact Match SQL 字符串归一化后相等 开发迭代
Execution Accuracy 结果集一致 发布门禁 P0
Semantic Match 指标 ID 一致 语义层路线
flowchart LR REL[发布候选] --> OFF[离线 Golden Run] OFF -->|pass| CAN[金丝雀 5%] CAN -->|pass| PROD[全量] OFF -->|fail| FIX[阻断]

→ 通用 Eval 0698 冲刺勾选。

4.3 元数据与血缘

资产 来源 刷新 Agent 消费
DDL 快照 Information Schema 日更 Linking
Join Graph FK + dbt manifest 随 dbt build Validator
列画像 Profiling 周更 异常检测
口径文档 Confluence/Notion RAG 索引 消歧
血缘 OpenLineage/dbt 实时 Explain 脚注

4.4 数据治理

  • 版本钉扎 version_pinprompt_rev + model + schema_snapshot_rev + dbt_manifest_rev + join_graph_rev
  • 留存:原始 NL 30d;SQL+结果摘要 90d;审计 7y(金融域)
  • 删除权:用户 opt-out → 擦除 question/execution 个人标识

5. 部署视图(Deployment View)

5.1 拓扑

flowchart TB subgraph K8s[&#34;Agent 平台 K8s&#34;] GW[Analytics Gateway] RT[Analytics Runtime] VAL[Validator Service] end subgraph Sandbox[&#34;沙箱子网&#34;] EXE[SQL Executor Pool] MY[(MySQL RO Replica)] PG[(PostgreSQL RO)] TRI[Trino Coordinator] end subgraph Semantic[&#34;语义层&#34;] CUBE[Cube Store] DBT[dbt Cloud / CLI] end GW --> RT --> VAL --> EXE RT --> CUBE & DBT EXE --> MY & PG & TRI

5.2 容量估算(Staff 必背)

输入 公式 示例
DAU 问数 Q = DAU × 3 问/人/日 500×3=1500
LLM 成本 Q × ($0.02~0.08) $30--120/日
数仓扫描 Q × 平均 5GB 7.5TB/日 → cap 必需
Sandbox CPU 并发 × 2 vCPU 50 并发 → 100 vCPU

5.3 环境策略

环境 数据 Golden 执行
dev 合成 子集 内存 DuckDB
staging 脱敏快照 全量 沙箱副本
prod 真副本 回归+金丝雀 只读+审批

6. 安全视图(Security View · 横切)

6.1 行级 / 列级安全(RLS / CLS)

机制 MySQL 8 PostgreSQL Headless BI
行级 视图+WHERE tenant_id RLS Policy Cube queryRewrite
列级 列权限 GRANT Column privileges + mask 维度可见性
动态 会话变量 @tenant current_setting('app.tenant') JWT claim
sql 复制代码
-- PostgreSQL RLS 示例(Agent 会话 SET app.tenant_id)
ALTER TABLE fct_order ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON fct_order
  USING (tenant_id = current_setting('app.tenant_id')::int);

mysql/13 安全17 §2

6.2 纵深防御(Analytics 栈)

flowchart TB L1[身份 RBAC / SSO] L2[语义层成员权限] L3[SQL Validator 白名单] L4[Sandbox 只读账号] L5[RLS/CLS 最后一道] L6[结果脱敏 DLP] L7[Audit append-only] L1 --> L2 --> L3 --> L4 --> L5 --> L6 --> L7

6.3 Prompt 注入与数据渗出

威胁 场景 控制
间接注入 口径文档「忽略策略」 RAG chunk 边界 + 来源标签
SQL 注入 NL 含 '; DROP Parser 拒绝多语句
渗出 「列出所有手机号」 列黑名单 + DLP
Join 放大 笛卡尔积 Join 图 + 行数上限

6.4 审计(Audit)

每条执行最小字段 (对齐 17 §2.4):

字段 说明
audit_id UUID
trace_id 链路
tenant_id / user_id / role 身份
nl_question 原文(可加密)
generated_sql 完整 SQL
approved_sql 人审后(若有)
approver_id 审批人
version_pin 版本
cost_estimate / rows_scanned 成本
policy_decision allow/deny/approval
result_row_count 结果规模
engine mysql-ro / pg-ro / trino

存储:ClickHouse / ES append-only;SIEM 对接;金融域保留 7 年。


7. 集成视图(Integration View)

7.1 与 dbt 工程集成

flowchart LR GIT[dbt Git Repo] --> CI[dbt CI build] CI --> MAN[manifest.json] MAN --> CAT[Agent Catalog Sync] MAN --> JG[Join Graph Builder] CAT --> RT[Analytics Runtime]
产物 用途
manifest.json 表/列/依赖
metrics.yml 指标→SQL
semantic_manifest MetricFlow 查询

7.2 Headless BI(Cube 示例)

yaml 复制代码
# cube/schema/Orders.js --- Agent 只暴露预定义 measures
measures:
  gmv_net:
    sql: "{CUBE}.amount"
    type: sum
    filters:
      - sql: "{CUBE}.status != 'cancelled'"

Agent Tool:cube_load({ measures: ['gmv_net'], dimensions: ['region'], timeDimensions: [...] })

7.3 数仓与 MySQL / PostgreSQL

引擎 典型角色 Agent 注意点
MySQL OLTP 副本 索引分区;禁止打主库
PostgreSQL 数仓/指标 RLS、JSONB 维表
Trino 联邦 catalog 白名单
Snowflake/BQ 企业仓 Warehouse=cost cap

深链mysql/08 锁postgres/03 MVCCpostgres/09 慢查

7.4 与通用 Agent 平台集成

模式 说明
Tool analytics_query 注册 04 Tool Router
MCP mcp-analytics 暴露语义查询
BFF 前端图表 ← dataset URI

8. 演进视图(Evolution View)

8.1 四阶段成熟度

Stage 名称 能力 准入
0 Copilot 只建议 SQL PoC
1 Governed Exec 沙箱+Validator+Golden≥85% 生产只读
2 Semantic First 80% 走指标 API exec_acc≥92%
3 Proactive Insights 异常推送 Stage2 稳定 2 季
flowchart LR S0[Stage0 Copilot] --> S1[Stage1 沙箱执行] S1 --> S2[Stage2 语义层优先] S2 --> S3[Stage3 主动洞察]

8.2 技术债清单

债项 信号 偿还
裸 SQL 比例高 >40% 补 metrics
Join 图腐烂 FK 变更未同步 manifest CI
Golden 过时 规则变 月度策展
Replica 延迟 结果不一致 延迟告警

9. 跨视图决策矩阵

决策 业务 应用 安全 数据 推荐
是否上语义层 口径争议多 降 Join 幻觉 权限集中 指标即文档 Yes
LLM 写 SQL 灵活 风险高 难评测 --- 沙箱+Validator
全量审批 体验差 --- 合规 --- 分级 L0--L4
PG vs MySQL 沙箱 --- --- RLS 强 --- 各 RO;联邦 Trino

10. 专题深潜

10.1 端到端流水线

flowchart LR A1[鉴权] --> A2[Intent] A2 --> A3[Metric Resolver] A3 --> A4[Schema Linking] A4 --> A5[SQL Gen] A5 --> A6[Validate] A6 --> A7{Cost Cap} A7 --> A8[Sandbox] A7 --> A9[Approval] A9 --> A8 A8 --> A10[Explain + Audit]

10.2 Schema Linking 算法选型

方法 优点 缺点 企业建议
全量 DDL 简单 Token 爆 禁止
RAG+Graph 可扩展、Join 稳 图维护 默认
Fine-tuned linker 域内高 训练成本 Stage2+

10.3 幻觉 Join(Hallucinated Join)

定义 :模型引入 不存在的外键错误 Join 键

类型 示例 后果
幽灵表 JOIN dim_salary 不存在 失败或绕过校验
错键 user_id 应为 buyer_id GMV 翻倍
桥接缺失 多对多无 bridge 行数爆炸
跨租户 tenant_id 泄漏

防护四层:语义层预 Join → Join Graph 白名单 → SQLGlot 验边 → EXPLAIN 行数异常。

10.4 Sandbox 清单

  • 独立子网、只读账号、超时、LIMIT、拒绝 DDL/DML
  • 审批 SQL 与执行 SQL hash 一致

10.5 Cost Cap 与 FinOps

$/question = LLM + scan;仪表盘联动 07

10.6 Golden 策展

生产脱敏日志 → 专家策展 → Peer Review → 回归套件;事故 SQL 入负例。

10.7 审批与审计一体

approval_id = 审计键;禁止先跑后批(break-glass 除外)。


11. 高频口述题(15 道 · 60--90s)

11.1 Text-to-SQL 和 RAG 问答区别?

:RAG 输出文本+引用;Text-to-SQL 输出 可执行程序 ,副作用是 成本与越权 。需 Validator+沙箱+RLS,评测用 Execution Accuracy。03 vs §3。

11.2 为何优先语义层?

:口径与 Join 预封装,解析为 metrics+dimensions,降幻觉 Join;裸 SQL 兜底且强审批。§3.4。

11.3 Schema Linking 怎么做?

:Retrieve-then-Generate:召回≤20表,Join Graph 约束,压缩 context;禁全库 DDL。§3.3。

11.4 什么是幻觉 Join?

:编造表关系或错键。Golden 标注 join_graph;EXPLAIN 行数异常。§10.3。

11.5 SQL Sandbox 最低配?

:只读账号、独立副本、超时、LIMIT、拒绝 DDL/DML、Parser 二次校验。§3.6。

11.6 行级安全放哪层?

:语义层权限 → Validator 注入 tenant → DB RLS。不能靠 prompt。§6.1。

11.7 Cost Cap 卡什么?

:扫描字节/行、wall time、日累计;超限走审批。§3.7。

11.8 Golden 门禁?

:Execution Accuracy ≥92%,无 P0 安全失败;钉扎 schema_rev。§4.2。

11.9 如何防「批 A 跑 B」?

approved_sql_hash 锁;审计双写。§3.8。

11.10 能否无限 ReAct?

:否。Plan-Execute,步数≤5。0427 §3.4

11.11 MySQL vs PG 沙箱?

:PG RLS 原生;MySQL 用视图+会话变量;联邦 Trino catalog 白名单。§6.1。

11.12 与 dbt CI 联动?

:manifest.json 同步 Catalog+Join Graph;变更触发 Golden。§7.1。

11.13 Headless 与 Agent 谁为主?

:Headless 为执行真相源;Agent 编排 NL。§7.2。

11.14 审计存多久?

:金融 7 年;含 identity、NL、SQL、审批、cost、version_pin。§6.4、17

11.15 Stage0→2 最大坑?

:口径未语义化→裸 SQL 与审批爆炸;先 metrics 化。§8.1。


12. STAR-M-P 事故复盘:幻觉 Join 导致 GMV 虚高

字段 内容
S 零售 Analytics Agent Stage1 第 5 天,渠道 GMV 比 BI 高 37%。
T 24h 定位止血;7 天 Join 防护与 Golden。
A audit 显示 fct_order JOIN dim_channel 错用 channel_id(应为 channel_sk);Validator 只验表白名单;降级 Stage0;热修 Join Graph;补 120 负例;财务更正。
R 撤回 41 份报告;无监管处罚。
P join_violation_rate=0execution_accuracy≥94%;审批率 38%→12%。
M ① SQLGlot+join_graph;② 80% MetricFlow;③ approved_sql_hash;④ P0 门禁。

27 §1213 §15


13. Master Checklist(P0 / P1 / P2)

13.1 P0 --- 上线阻断

  • P0-01 仅 SELECT/WITH;拒绝 DDL/DML/多语句
  • P0-02 沙箱只读副本 + 网络隔离
  • P0-03 RLS/CLS 或语义层成员权限
  • P0-04 Join Graph 或语义层优先
  • P0-05 Cost cap:超时+LIMIT+扫描预估
  • P0-06 Golden 门禁 execution_accuracy
  • P0-07 审计 append-only
  • P0-08 审批与执行 SQL hash 一致
  • P0-09 version_pin 含 schema+dbt manifest
  • P0-10 列黑名单 PII
  • P0-11 tenant_id 全链路
  • P0-12 break-glass 留痕

13.2 P1 --- Staff 答辩

  • P1-01 七视图+流水线
  • P1-02 Schema Linking 四步
  • P1-03 dbt vs Cube vs 裸 SQL
  • P1-04 幻觉 Join 四层防护
  • P1-05 真实 exec_acc / 审批率
  • P1-06 PG RLS 白板
  • P1-0798
  • P1-08 STAR-M-P 含 M
  • P1-09 副本延迟策略
  • P1-10 Stage0→2 路径

13.3 P2 --- 卓越

  • P2-01 Trino 联邦沙箱
  • P2-02 自动 Golden 挖掘
  • P2-03 Learned linker
  • P2-04 AI Gateway 24 契约
  • P2-05 Stage3 主动洞察 POC

14. 附录 A:OpenAPI 片段(Task Submit)

yaml 复制代码
post /v1/analytics/query:
  headers:
    X-Tenant-Id: required
    X-Data-Role: required
  body:
    question: string
    preferred_output: enum [table, chart, metric_only]
    risk_override: enum [auto, approval_required]
  responses:
    202: { query_id, trace_id, status }
    403: policy_denied
    429: cost_budget_exceeded

15. 附录 B:审计表 DDL(PostgreSQL)

sql 复制代码
CREATE TABLE analytics_audit_log (
  audit_id        UUID PRIMARY KEY,
  trace_id        VARCHAR(64) NOT NULL,
  tenant_id       VARCHAR(32) NOT NULL,
  user_id         VARCHAR(64) NOT NULL,
  data_role       VARCHAR(32) NOT NULL,
  nl_question     TEXT,
  generated_sql   TEXT NOT NULL,
  approved_sql    TEXT,
  approver_id     VARCHAR(64),
  sql_hash        CHAR(64) NOT NULL,
  version_pin     JSONB NOT NULL,
  cost_estimate   JSONB,
  rows_scanned    BIGINT,
  policy_decision VARCHAR(24) NOT NULL,
  engine          VARCHAR(24) NOT NULL,
  created_at      TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_audit_tenant_time ON analytics_audit_log(tenant_id, created_at DESC);

16. 附录 C:与 05-architecture 六视图对照

05 视图 本篇 Analytics 增量
业务 01 §2 问数场景、HITL
应用 05 §3 Linking、Sandbox
数据 04 §4 Golden、血缘
部署 03 §5 沙箱副本
安全 06 §6 RLS、审计
技术 02 §7 dbt、Headless
--- §8 Stage0--3

17. 附录 D:七视图×五维度追问矩阵

视图 容量 成本 合规 失败 一致性
业务 §2 DAU §2 $/问 §2 HITL §2 降级 §2 口径
应用 §5 并发 §3.7 cap §3.8 审批 §3.2 SLA §3.5 校验
数据 §4 快照 Golden 存储 §4 留存 §4 回归 §4 hash
部署 §5.2 GPU/CPU 隔离 §5.3 副本延迟
安全 §6 限流 事故成本 §6.4 7y §6.3 注入 RLS
集成 §7 Trino WH slot catalog §7.1 CI manifest
演进 §8 分期 技术债 Stage 准入 回滚 版本钉扎

18. 附录 E:术语表

术语 定义
Schema Linking NL→表列/指标/Join 路径
Semantic Layer dbt/Headless 口径层
SQL Sandbox 隔离只读执行环境
Hallucinated Join 不存在或错误的 Join
Golden Set 发布门禁评测集
Execution Accuracy 结果集与金标一致
Cost Cap 扫描/时间/行数上限
version_pin 全链路版本快照
RLS / CLS 行级/列级安全

19. 附录 F:阅读路径

岗位 本周 下周
Applied AI §3+§10+04 06 Eval
数据架构 §4+§7+mysql/05 postgres/06
安全 §6+17 98
架构师 全篇+27 98 T01--T20

99. 冲刺 Q&A 与章节导航

99.1 章节导航

内容
§0 30 分钟 Checklist
§1 七视图方法论
§2 业务视图
§3 应用视图
§4 数据视图(Golden Set)
§5 部署视图
§6 安全视图
§7 集成视图
§8 演进视图
§9 决策矩阵
§10 幻觉 Join 专题
§11 15 道口述
§12 STAR-M-P
§13 Master Checklist
§14--19 附录
§99 Q&A

99.2 冲刺 Q&A(T01--T40)

ID Q A(brief) 锚点
T01 Schema Linking 漏表? Hybrid 检索+同义词+澄清;降级 L1。 §3.3
T02 dbt 与 Cube 并存? Metric Registry 统一映射执行后端。 §7
T03 Validator 独立服务? 是,无状态,便于审计升级。 §3.5
T04 UNION 绕过? AST 单 SELECT;禁 UNION 除非白名单。 §3.5
T05 Replica 延迟? 脚注 data_freshness_lag;超阈拒答。 §5
T06 指标口径变更? metric_rev 进 version_pin;Golden 回归。 §4
T07 临时表? 默认禁;scratch 库+TTL DROP。 §3.6
T08 Audit 存 ClickHouse? 按日分区;TTL 7y;禁 UPDATE。 §6.4
T09 Trino 白名单? allowed_catalogs 配置。 §7.3
T10 Prompt 注入? Guardrails;RAG 来源隔离。 §6.3
T11 Window 成本高? 限制分区列;cost cap。 §3.7
T12 中英混问? 多语 Embedding;指标 ID 英文。 §3.3
T13 与 ReAct? 有界 Plan-Execute,非无限环。 §11.10
T14 Golden hash 不一致? 查副本延迟/浮点容差。 §4.2
T15 Cube 缓存? pre-aggregation + question_hash。 §7.2
T16 break-glass? 双批+flag+24h 复盘。 §13
T17 注释注入? Parser 剥注释再验 AST。 §3.5
T18 列 mask? 语义层→视图→DLP 三层。 §6
T19 口径争议度量? metric_disambiguation_rate §2
T20 子查询深度? depth≤3,更深审批。 §3.5
T21 与 27 预算? LLM+scan 合并 $/question §3.7
T22 MCP schema? metrics\[\] dimensions\[\] filters{}。 §7.4
T23 禁导出? policy result_export=false。 §2
T24 图表谁画? Agent 返 vega-lite;前端渲染。 §3
T25 OIDC 映射? groups→data_roles→策略。 §6
T26 误删风险? 沙箱无写;审计仅 SELECT。 §3.6
T27 CTE? 允许 WITH;须过 Join 图。 §3.5
T28 「上周」时区? tenant TZ→UTC 存本地显。 §3
T29 重复问浪费? idempotency_key 日级缓存。 §3
T30 模型升级? Golden shadow 24h。 §4
T31 敏感列名? CLS+Catalog sensitive 标。 §6
T32 跨库 Join? manifest 声明的 cross-catalog 边。 §10.3
T33 CSV 导出? 异步+审批+水印+行限。 §2
T34 解释数字? metric 定义+SQL+lineage。 §3
T35 vs BI 仪表盘? NL 入口 vs 固化视图。 §2
T36 私有化 vLLM? 金融常要;语义层同域部署。 §5
T37 Golden 谁维护? Owner+平台月度会。 §10.6
T38 用户点踩? 进 Golden 候选池。 §4
T39 98 怎么背? §0→§3→§11 五题→P0→T01--10。 §99
T40 分库分表 Linking? 逻辑表映射 Catalog;禁跨 shard Join。 §7

99.3 与 98 交叉索引

98 模块 本篇锚点
Agent 生产 C.29--40 §3、§11
RAG C.56--65 §3.3 Linking
安全 C.80+ §6、17
FinOps C.47--55 §3.7、07
Text-to-SQL 新增 T01--T40

99.4 考前 10 分钟速记

  1. 七视图一句话(§1.2)
  2. 流水线七段(§10.1)
  3. 幻觉 Join 四层(§10.3)
  4. P0 十二条(§13.1)
  5. STAR:错 Join → Join Graph → 语义层

20. 附录 G:Validator 规则全集(R01--R30)

rule_id 检查项 动作
R01 仅 SELECT/WITH BLOCK
R02 拒绝 ; 多语句 BLOCK
R03 表白名单 BLOCK
R04 列黑名单 BLOCK
R05 Join 边∈graph BLOCK
R06 事实表 dt 过滤 WARN→BLOCK
R07 EXPLAIN 扫描上限 APPROVAL
R08 LIMIT 上限 ENFORCE
R09 超时 KILL
R10 sql_hash 与审批一致 BLOCK
R11 拒绝 INTO OUTFILE BLOCK
R12 拒绝 LOAD BLOCK
R13 拒绝 CALL/PROCEDURE BLOCK
R14 子查询深度 APPROVAL
R15 CROSS JOIN 无 ON BLOCK
R16 全表扫无分区 APPROVAL
R17 敏感列访问 BLOCK
R18 tenant 谓词注入 ENFORCE
R19 注释剥离后解析 BLOCK
R20 UNION 默认禁 BLOCK
R21 信息_schema 访问 BLOCK
R22 pg_catalog 访问 BLOCK
R23 系统变量 SET BLOCK
R24 锁提示 USE INDEX 滥用 WARN
R25 笛卡尔积行数预估 APPROVAL
R26 窗口函数分区键 WARN
R27 跨 catalog 边 BLOCK
R28 结果列数上限 TRUNCATE
R29 PII regex 结果扫描 MASK
R30 version_pin 缺失 BLOCK

21. 附录 H:Golden Case 标签 taxonomy

tag 含义 示例
metric_only 仅语义层 「上周 GMV」
join_2hop 两跳 Join 订单×渠道×区域
join_bridge 桥表 订单×商品×类目
window_yoy 同比窗口 「同比 GMV」
timezone 时区边界 自然周 vs 财务周
rls_tenant 租户隔离 跨租户负例
pii_block 应拒绝 「导出手机号」
cost_hot 大扫描 无分区全表
approval_L2 需审批 宽表 Join
hallucinated_join 错 Join 负例 错 channel_sk

22. 附录 I:MySQL 沙箱账号 GRANT 示例

sql 复制代码
CREATE USER 'agent_ro'@'10.%.%.%' IDENTIFIED BY '...';
GRANT SELECT ON mart_order.* TO 'agent_ro'@'10.%.%.%';
GRANT SELECT ON mart_dim.* TO 'agent_ro'@'10.%.%.%';
-- 禁止 INSERT/UPDATE/DELETE/CREATE/DROP
SET GLOBAL MAX_EXECUTION_TIME = 30000;  -- 会话级可覆盖

→ 索引与 EXPLAIN:mysql/05mysql/04 二级索引


23. 附录 J:PostgreSQL 沙箱 + RLS 示例

sql 复制代码
CREATE ROLE agent_ro LOGIN;
GRANT USAGE ON SCHEMA mart TO agent_ro;
GRANT SELECT ON ALL TABLES IN SCHEMA mart TO agent_ro;
ALTER ROLE agent_ro SET statement_timeout = '30s';

-- 应用连接后
SET app.tenant_id = '12345';
-- RLS policy 见 §6.1

→ MVCC 与可见性:postgres/03;Planner:postgres/06


24. 附录 K:MetricFlow 查询 Tool JSON Schema

json 复制代码
{
  "name": "semantic_query",
  "parameters": {
    "type": "object",
    "required": ["metrics", "dimensions"],
    "properties": {
      "metrics": { "type": "array", "items": { "type": "string" } },
      "dimensions": { "type": "array", "items": { "type": "string" } },
      "where": { "type": "string" },
      "limit": { "type": "integer", "maximum": 10000 }
    }
  }
}

25. 附录 L:Catalog 表注册模板(批量)

logical_name physical_table domain embedding_id join_graph_rev
fct_order mart.fct_order order emb_001 jg_v3
dim_region mart.dim_region order emb_002 jg_v3
dim_channel mart.dim_channel order emb_003 jg_v3
fct_payment mart.fct_payment pay emb_010 jg_v3
dim_merchant mart.dim_merchant pay emb_011 jg_v3
fct_refund mart.fct_refund order emb_020 jg_v3
dim_product mart.dim_product product emb_030 jg_v4
bridge_order_item mart.bridge_order_item order emb_031 jg_v4
fct_inventory mart.fct_inventory supply emb_040 jg_v4
dim_warehouse mart.dim_warehouse supply emb_041 jg_v4

下一步 :时间紧走 §0 → §3 → §11 任选 5 题 → §13 P0 → §99 T01--T10 ;Architect 补 §6 RLS + §7 dbt + §12 STAR ;数据岗加刷 mysql/05postgres/06。冲刺总览 98

官方文档与源码(一级依据)

AI Engineering · 正文机制应来自下方 官方文档(L1)官方源码仓库(L2) ; 禁止用教程站/博客充当机制依据。本章 QPS/延迟/STAR 为面试示意。 写作规范:docs/official-sources-registry.md §0

L1 · 官方文档

L2 · 官方源码

L3 · 论文 / 开放规范

相关推荐
程序猿阿越6 分钟前
AutoMQ源码(一)读、写、Compaction
java·后端·源码
foggyprojects1 小时前
一个企业查询问题,如何从自然语言走到 DSL 再走到 SQL
后端
掘金者阿豪1 小时前
PDO连金仓数据库(下篇):预处理语句、大对象和批量操作
后端
RealPluto1 小时前
Rancher证书轮换过期导致不能访问UI问题处理
后端
Asize1 小时前
Bun + TypeScript 实战:从接口约束到 RESTful 路由设计
后端·typescript·代码规范
鱼人1 小时前
Go 操作 MySQL:常用写法与最佳实践
后端
挖坑的张师傅1 小时前
方便 Mac 本机运行 e2b 的沙箱方案 e2b-local
人工智能·后端
开心猴爷1 小时前
Flutter 如何自动上传 可以 IPA 把构建和上传分开处理
后端·ios
二月龙1 小时前
defer 执行顺序与底层原理,90% 的人都理解不全
后端
长大19881 小时前
新手常犯的 Go 语法错误,一次性帮你避坑
后端