语义层 · 2024 年 7 月 7 日 · 18 分钟

语义层:指标、维度、实体,先钉死再问

语义层夹在自然语言和物理表之间。它把「销售额、毛利、复购」收成指标,把「城市、品类、渠道」收成维度,把 Join 路径收成实体关系。提问先生成指标查询(常是一份受限的 JSON:metrics、dimensions、timeRange、filters),再由引擎编译成方言 SQL。

这样做的工程理由(整理自 NL2MQL2SQL 报告与 Cube / MetricFlow 一类实践):

  • SQL 写法无限,难校验;MQL 是白名单,指标名不存在就拒绝。
  • 物理表改名、拆表,只改映射,提问卡片不用重写。
  • 口径唯一:所有人问「成交 GMV」都走同一计算式。

观远落地清单把语义层放在第一项。Aloudata 等厂商把路线叫 NL2MQL2SQL,强调确定性中间层。个人或小团队没有引擎时,用指标字典 + SQL 模板冒充:意图合法才填模板。没有字典就不要开放「随便问」。

语义层不消灭 Text-to-SQL。明细、即席探索、字典里没有的衍生计算,仍要落到语句。方案里应同时有「指标通道」和「即席通道」,并标明哪条走哪条。

出处

  • Miracle,NL2MQL2SQL 架构报告
  • dbt MetricFlow / Cube Query Format 文档
  • 观远落地清单第 1 条:语义层
  • Aloudata:指标语义层与 NL2MQL2SQL

WUJI问数

个人笔记站。记录对话式问数智能体:Text-to-SQL、语义层、只读执行与分析呈现的整套方案。

本站为个人非经营性网站,内容开放阅读。文中示例仅供学习,执行任何数据库操作前请自行核对。

笔记关于隐私说明使用说明浙ICP备2025147228号