概念

概念 #

总览 #

下面这个图清晰地表达了SuperSonic中Headless部分的各种概念之间的关系:

  1. 数据集、数据模型都归属于一个主题域

  2. 数据集可由多个模型组装而来

  3. 数据模型由指标、维度和标签组装而成

  4. 它们之间类似DB中的对应关系:

    Database(主题域)->View(数据集)->Table(数据模型)->Column(指标/维度/标签)

主题域 #

主题域可以理解为一个分类的概念,用户可以根据自己的业务场景来划分主题域。SuperSonic中的数据模型,数据集,术语等概念都归属于一个主题域。

数据模型 #

在SuperSonic中, 数据模型是对数据库中数据的一种逻辑层面上的抽象, 它既可以直接指代一张物理表, 也可以由一段SQL逻辑创建而成。 当我们得到一张表物理表或者一段逻辑SQL后,可以将表头字段指定为主键、维度、度量、时间日期或者是普通字段, 当表头字段都被赋予这些特定的语义后, 即形成了一个数据模型。

字段 字段类型(表/SQL表头) 语义类型(模型)
imp_date Date 日期
user_name String 主键
department String 维度
pv Bigint 度量
uv Bigint 度量

主键 #

SuperSonic中的主键概念不完全等同于数据库中的主键。当我们创建多个模型之后,如果需要指定模型间的关联关系,通俗来讲就是Join的方式, 就可以通过指定主键来进行关联。

维度 #

维度指代那些表格中通常被用来进行分组和过滤的字段。

度量 #

度量的概念则恰好和维度相反,通常是一些数值型的字段,用来表达客观现象的程度。在SuperSonic中,度量主要用来创建一个具体的指标,没有其它实质性的作用。

指标 #

指标是相对度量更具具体和实例化的概念,用户可以基于度量,字段或者已有指标来创建指标并对它进行管理。同时,创建出来的指标也可以被问答这样的上层BI产品进行消费。

时间日期 #

时间日期字段在SuperSonic中有比较重要的作用,比如一个典型的场景,当我们在问答中询问"超音数近10天访问次数"时,需要得到具体的 时间字段来进行时间范围的过滤。因此,提前在建模时把时间字段及其格式显示指定好,能起到很大的作用。并且,目前当模型中包含有度量时, 就必须指定时间日期字段。

标签对象 #

在SuperSonic中,标签对象特指被标签圈选的实体对象。比如“国风类型的歌曲”,歌曲在这里就是一个标签对象,以及“访问次数超过100的用户”,用户在这里也是一个标签对象

标签 #

标签用来圈取标签对象,比如,在上面的例子“国风类型的歌曲”,国风就是一个标签。标签可以由是一个维度,也可以是由一个指标演化而来。

数据集 #

数据集是SuperSonic用来对接问答和其它上层BI应用的一个数据结构,在数据集中,可包含来自多个模型的维度指标。 对上层应用来说,底层建模细节是隐藏的,它只需要关注数据集中暴露出来的维度指标即可,也就是说,上层应用可以把一个数据集当作是一个大宽表,可以直接进行指标维度的分析查询。

术语 #

企业内部通常有自己的私域知识,是否能把私域知识教给大模型对结果准确性有较大的影响。因此,SuperSonic引入了术语的概念,通过配置术语及其描述,就可以把私域知识 传授给大模型。比如SuperSonic给的样例术语:[近期]指代近10天;[核心用户]指Tom和Lucy,就能很容易让大模型学习到这个知识。

SQL变量 #

当我们写SQL脚本的时候,如果希望有一些更加动态的效果,就需要用到SQL变量。举个例子,当我们想基于同一个SQL模板动态的查询日表/周表/月表的时候,就可以采用SQL变量, 如下面这段SQL,interval就是一个SQL变量,通过在调用接口的时候动态的传递interval的值,就可以实现查询不通周期粒度表的效果。

select *
from s2_pv_$interval$
注意 当前SQL变量只作用在通过API接口查询数据的时候,而不作用在智能问答