Files
supersonic/docs/userguides/semantic_user_guide_cn.md
2023-07-31 11:09:58 +08:00

109 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 语义建模
### **简介**
语义建模是使用超音数的第一步。在这个模块中,它可以连接上你的数据库引擎,并通过简单方便的方式来帮助你将物理数据建模为数据源、维度和指标等逻辑概念。建模完成后,你就可以在问答中通过自然语言的方式来和你的物理数据交互啦~
### **问题示例**
为了帮助你更好地理解建模的过程,我们通过一个问题示例来进行介绍: 超音数本身作为一个产品,那么如何用语义建模来统计它的埋点访问数据呢?比如超音数在一段时间内的访问用户数是多少?这些用户的访问次数和停留时长是怎样的?这些用户来自哪些部门?这些用户看了哪些页面?分别看了多少次?等我们建模完成,这些问题的答案也就浮出水面了。
### **1. 创建一个主题域**
在超音数中主题域是一个非常重要的概念它存在并作用于系统的每一个地方。简单来说超音数引导用户把数据划分为一个个主题域用户在创建主题域之后可以在这个主题域中进行数据源维度指标等建模。如图1-1所示为了统计超音数的埋点访问情况我们创建了一个叫"超音数"的主题域作为示例:
<div align="center" >
<img src=../images/domain.png width="70%"/>
<p>图1-1 主题域示例</p>
</div>
### **2. 创建一个数据库连接**
创建一个数据库连接主要分为三个步骤,
1. 填写连接信息
2. 点击测试连接若连接测试通过则可点击保存。否则返回步骤1
3. 点击保存。
如图2-1所示由于超音数的埋点访问数据被存放在H2数据库中因此我们创建了一个H2数据库实例作为例子。除了H2数据库以外我们还支持MySQLClickHouse等多种常见数据库。
<div align="center" >
<img src=../images/database.png/>
<p>图2-1 数据库连接示例</p>
</div>
### **3. 创建数据源**
连接上数据库之后我们首先需要把物理数据抽象为一个个数据源。在超音数中数据源是对数据库中数据的一种逻辑层面上的抽象它既可以直接指代一张物理表也可以由一段SQL逻辑表示而成。数据源中涉及的字段可被指定为维度或者度量而这些维度和度量又可以衍生出更复杂的维度和指标。如图3-1超音数提供了两种创建数据源方式。
<div align="center" >
<img src=../images/datasource_create.png/>
<p>图3-1 数据源创建方式</p>
</div>
其中,**快速创建** 可以直接指定一张物理表来把它创建为数据源,而**SQL脚本** 则提供了更为灵活的数据源创建方式我们可以通过写一条逻辑SQL来把它指定为数据源
如图3-2为通过**SQL脚本**的方式创建数据源首先我们写一条SQL来表达我们的数据源逻辑然后点击运行就可以看到这条SQL查询出来的数据校验数据无误之后我们可以点击生成数据源
<div align="center" >
<img src=../images/datasource_sql.png/>
<p>图3-2 SQL脚本</p>
</div>
如图3-3所示点击生成数据源之后需要我们填写一些基本信息如数据源名称和描述填写完成之后点击下一步
<div align="center" >
<img src=../images/datasource_base_info.png/>
<p>图3-3 数据源基本信息</p>
</div>
如图3-4所示填写完基本信息之后需要填写一些字段信息把数据源的字段指定为维度或者度量其中日期和主键/外键为特殊的维度。
**维度**主要用于筛选和分组
**度量**主要标识数值类型字段,用来进行聚合计算
**日期字段**主要用于标识,方便问答进行数据查询。
**主键/外键**则用于不同数据源之间的连接字段,若多个不同数据源存在相同的主键外键,则可以进行多数据源连接
<div align="center" >
<img src=../images/datasource_extend_info.png/>
<p>图3-4 数据源字段信息</p>
</div>
把字段指定为维度/度量之后,还可选择是否勾选**快速创建**单选框。若**勾选**,则会直接把选中的维度/度量批量创建到维度/指标列表。若**不勾选**,但字段已被选定为维度/度量,该字段虽然不会直接被创建到维度/指标列表,但是后续在创建衍生维度/指标的时候也可作为表达式中的字段被用上。如图3-5所示为我们创建的3个数据源示例分别为超音数用户停留时长统计访问次数和访问人数统计用户部门统计。
<div align="center" >
<img src=../images/datasource_list.png/>
<p>图3-5 数据源列表</p>
</div>
### **4. 创建维度**
如图4-1为刚刚创建数据源时通过勾选**快速创建**按钮创建出来的维度。分别为用户名,用户所在的部门,用户浏览过的超音数页面。
<div align="center" >
<img src=../images/dimension_list.png/>
<p>图4-1 维度列表</p>
</div>
若我们需要更复杂的维度如我们需要根据页面来划分模块那我们可以点击创建按钮来创建一个更复杂的维度。如图4-2所示
<div align="center" >
<img src=../images/dimension_create.png/>
<p>图4-2 维度创建</p>
</div>
### **5. 创建指标**
和维度类似如图5-1为通过**快速创建**按钮创建出来的指标,分别为访问超音数的次数,人数和停留时长。这几个指标都可以在用户、部门 、页面等分组粒度上进行计算。
<div align="center" >
<img src=../images/metric_list.png/>
<p>图5-1 指标列表</p>
</div>
若我们需要统计口径更复杂的指标,如用户的平均停留时长,可以通过点击**创建指标**按钮来进行创建如图5-2和5-3所示:
<div align="center" >
<img src=../images/metric_base_info.png/>
<p>图5-2 指标基本信息</p>
</div>
如图5-3 展示了人均停留时长这个指标依赖的度量信息,分别依赖了访问人数和停留时长这两个度量(分别来自于停留时长统计和PVUV统计两个数据源均在度量名称前加上数据源名称作为前缀加以区分),并通过在表达中将它们相除,计算出人均停留时长。
<div align="center" >
<img src=../images/metric_sql_info.png/>
<p>图5-3 指标表达式信息</p>
</div>
### **总结**
到此为止,我们就成功把超音数的访问统计数据建模成了相关的数据源、维度和指标。通过在问答中直接对这些维度和指标进行提问,就可以回答我们在介绍开头提到的那些问题啦!