☰
SuperSonic 语义层构建统一数据语义模型:从痛点到落地的实战指南
2026/10/15 20:39:35 网站建设 项目流程

SuperSonic 语义层构建统一数据语义模型:从痛点到落地的实战指南

【免费下载链接】supersonicSuperSonic is the next-generation AI+BI platform that unifies Chat BI (powered by LLM) and Headless BI (powered by semantic layer) paradigms.项目地址: https://gitcode.com/GitHub_Trending/su/supersonic

如果你被问过一句“帮我拉一下上周的订单数据”,第一反应往往是:得先找一个会写 SQL 的人。SuperSonic 是统一了 Chat BI 与 Headless BI 的 AI+BI 平台,它的 SuperSonic 语义层改变的就是这个流程:先在语义模型里把指标、维度及其业务含义定义好,之后自然语言提问就能被系统直接解析执行。这篇文章带你一步步把它搭起来。

“要个数”是怎么变成瓶颈的

多数团队里,数据需求的路径是这样的:业务同学用业务语言描述需求,数据工程师翻译成 SQL,出数后发现口径对不上。“订单量”这三个字,销售算的是“已支付订单”,财务算的是“已结算订单”,两个数差 5%,还都“正确”。

问题出在哪:业务概念长在人的脑子里,表里存的只是技术字段。语义层补的正是这个缝隙。

架在表上方的一本“业务字典”

把语义层理解成一本放在物理数据和业务人员之间的字典:一边是表名、字段名、聚合逻辑,另一边是业务同学听得懂的指标和维度,中间的对应关系由它统一维护。

这一层建好后,四件事同时被解决:

  • 统一业务语言:“转化率”只有一个定义,哪个部门来问,数都一样;
  • 降低技术门槛:业务人员用大白话提问,不用背表结构;
  • 保证口径一致:聚合方式、过滤条件写死在模型里,“同指标两个数”从此消失;
  • 提升分析效率:从提问到 SQL 再到图表,省掉一轮人工翻译。

SuperSonic 里这层有两个入口:Chat BI 界面负责“问”,业务人员对着数据聊天;Headless BI 界面负责“定义”,数据工程师在没有前端的情况下维护语义模型。一个定义、一个消费,共用同一套模型——这就是两者的交汇点。

语义层三大件 🧩

组件职责所在位置
语义模型管理指标、维度、模型的创建、编辑、版本与权限维护webapp/packages/supersonic-fe/src/pages/SemanticModel/
领域管理按业务领域归置模型,防止语义库越堆越乱webapp/packages/supersonic-fe/src/pages/SemanticModel/DomainManager.tsx
语义解析引擎自然语言转 S2SQL 结构化查询,再生成可执行 SQLheadless/chat/src/main/java/com/tencent/supersonic/headless/chat/

模型管理入口是SemanticModel目录下的ModelManager.tsx;指标表单在 Metric 子目录的MetricInfoCreateForm.tsx,计算公式和聚合方式就是在那里填的。

语义模型构建三步走

第一步:指标和维度怎么配

指标和维度是模型的两种积木。新建指标时要回答三个问题:

  1. 计算公式:比如sum(order_amount);
  2. 聚合方式:求和、计数、平均、去重,选哪种取决于定义;
  3. 可绑定维度:这个指标能从哪些角度切——时间、区域、渠道等。

维度还能带层级:“大区”是“省份”的父级,“省份”是“城市”的父级。配好后,下钻提问才成立。

第二步:模型之间怎么关联

一个查询要跨表(运单表接车辆表)时,需要声明两个模型的语义关系:谁是源模型、谁是目标模型,连接条件是什么(如waybill.vehicle_id = vehicle.vehicle_id),关系类型是一对多还是一对一。入口在SemanticGraph/components/目录的ModelRelationFormDrawer.tsx,解析引擎靠它生成正确的关联 SQL。

第三步:把物理字段映射成业务语义

物理字段天生是技术味的,要做三类转换:

  • 字段名映射:amt映射成“订单金额”,系统才知道“挣了多少钱”对应它;
  • 取值映射:状态码1/2/3映射成“在途/已签收/已退回”,问“已签收的运单”才能被解析;
  • 类型映射:存成字符串但表达时间的字段,标记为日期类型,时间问句才对得上。

扩展机制与权限分级 🛡️

SuperSonic 是可插拔框架:解析与翻译链路通过 Java SPI 提供扩展点,你可以写自己的语义解析器注册进去,不用动主流程。有私有行业词表、自研词典的团队,这里是接入点。

权限分三级,管的是不同的东西:

级别控制什么典型场景
数据集级能否使用该语义模型外包分析师只能看到本项目模型
列级能看到哪些指标/维度销售可见订单量,不可见毛利
行级结果里能看到哪些数据区域经理只能看到本区域运单

落地案例:给物流公司建一套语义模型

一家中小物流公司,有三张表:运单表、车辆表、仓库表。按顺序搭:

  • 指标:时效(delivery_duration求平均)、准时率(准时数/总数)、运费成本(freight_cost求和);
  • 维度:线路区域、仓库、时间(到日);
  • 关系:运单与车辆按vehicle_id多对一,运单与仓库按始发/到达多对一;
  • 映射:状态码转业务词,departure_time标记为日期类型。

建完,业务同学在聊天框直接问:“本月华东线路的平均时效是多少,按仓库拆开?”解析引擎先把问句翻成 S2SQL:

SELECT warehouse, avg(delivery_duration) FROM s_waybill WHERE route_region = '华东' AND stat_date = '本月' GROUP BY warehouse

再针对物理表生成可执行 SQL 并出图。“本月”“华东”的定义全部来自语义层,而不是提问人的记忆。

三个避坑建议

  1. 渐进式构建:先搭最常用的 5~10 个指标,用起来再扩——小而准的模型好过大而错的;
  2. 让业务确认口径:指标入库前,找提需求的人确认公式与聚合方式,把口径锁进模型而不是脑子里;
  3. 盯语义解析失败率:某问句总是解析错,多半是字段缺业务别名或取值映射,先补映射,别改数据。

下一步从哪开始

今天就能做三件事:① 挑一个真正在用的核心指标,在语义模型模块里把配置完整走一遍;② 用领域管理把已有模型按业务域归置;③ 拿几个高频自然语言问题在 Chat BI 里跑,对照人工口径逐条核对。对不上就先查语义层——大多数错在定义层。

【免费下载链接】supersonicSuperSonic is the next-generation AI+BI platform that unifies Chat BI (powered by LLM) and Headless BI (powered by semantic layer) paradigms.项目地址: https://gitcode.com/GitHub_Trending/su/supersonic

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询