概念 #
总览 #
下面这个图清晰地表达了SuperSonic中Headless部分的各种概念之间的关系:
-
数据集、数据模型都归属于一个主题域
-
数据集可由多个模型组装而来
-
数据模型由指标、维度和标签组装而成
-
它们之间类似DB中的对应关系:
Database(主题域)->View(数据集)->Table(数据模型)->Column(指标/维度/标签)
![](/img/supersonic_headless_concept.png#center)
主题域 #
主题域可以理解为一个分类的概念,用户可以根据自己的业务场景来划分主题域。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接口查询数据的时候,而不作用在智能问答