怎么用
目标不是“模型会写 SQL”,而是让业务问题经过语义层、权限、安全校验和结果解释,形成可交付的数据产品链路。
Step 1 · 准备小型业务数据
先用 3 张表即可:
orders(order_id, user_id, amount, status, created_at)
users(user_id, city, channel, created_at)
refunds(refund_id, order_id, amount, reason, created_at)验收:写 10 个真实业务问题,例如“上周各渠道 GMV 和退款率是多少?”
Step 2 · 建语义层
不要把原始 schema 直接丢给模型。准备一份业务字典:
metrics:
gmv: sum(orders.amount where status = 'paid')
refund_rate: sum(refunds.amount) / gmv
dimensions:
city: users.city
channel: users.channel验收:每个指标都有口径、时间字段、过滤条件。
Step 3 · Schema linking
让模型先输出结构化意图:
{
"metric": ["gmv", "refund_rate"],
"dimensions": ["channel"],
"time_range": "last_week",
"filters": []
}再由程序拼接候选表和字段,减少模型乱用表。
Step 4 · 生成只读 SQL
约束:
- 只允许
SELECT - 禁止
DROP/DELETE/UPDATE/INSERT - 必须带 limit 或聚合
- 必须使用允许的表和字段
验收:SQL 通过 AST 或规则校验后才执行。
Step 5 · 执行与错误修复
常见错误分三类:
- 字段不存在:回到 schema linking
- 聚合口径错误:回到语义层
- SQL 方言错误:让模型基于错误信息修复一次
最多修复一次,避免无限循环。
Step 6 · 结果解释
返回不只是表格,还要包括:
- 结论一句话
- 指标口径
- 过滤条件
- 异常点
- 下一步建议
Step 7 · 图表推荐
简单规则即可:
- 时间序列:折线图
- 维度对比:柱状图
- 占比:条形图或饼图
- 明细列表:表格
验收:输出 ECharts option 草稿或图表配置说明。
Step 8 · 权限与脱敏
行级权限先于查询生成。敏感字段如手机号、身份证、邮箱默认不暴露;确需展示也要脱敏。
Step 9 · 面试讲述
结构:
- 先做语义层,避免模型直接猜口径。
- 结构化意图做 schema linking。
- SQL 只读校验和权限过滤先于执行。
- 输出包含口径、图表建议和可追溯 SQL。