你问 AI“各地区收入多少”,它很快给出 1486 万美元,看起来也像那么回事。问题是,真实数字只有 1136 万美元,足足多算了 350 万美元。Daniel Poppy 在 dbt 博客介绍的案例显示,AI 使用了折扣和退款前的金额,还计入取消、待处理订单及内部测试账户。这些规则不在数据库表结构里,查询能正常运行,却把业务口径算错了。
解决办法是加一层 Semantic Layer(语义层)——把“收入”等指标的正式定义、可用维度和关联规则集中保存。AI 只能从已经认证的指标中选择,再由 MetricFlow 编译 SQL,而不是自己临场猜表、拼查询;MCP(让 AI 调用外部工具和数据源的统一协议)则负责把查询交给 Amazon Redshift 执行。据 dbt Labs 团队自测,同一模型直接查询数据库时准确率为 80%—91%,通过语义层后达到 96%—100%。这些数字来自 dbt 博客转述的演讲与内部基准,材料未披露测试集规模;但案例说清了一点:AI 会写 SQL,只代表语法可能正确,不代表它理解公司究竟怎样计算收入。