diff --git a/构建语义模型.md b/构建语义模型.md index 0856a87..c8b82f5 100644 --- a/构建语义模型.md +++ b/构建语义模型.md @@ -2,7 +2,7 @@ **问题示例** -为了帮助你更好地理解建模的过程, 我们通过一个问题示例来进行介绍: 超音数本身作为一个产品, 那么如何用语义建模来统计它的埋点访问数据呢?比如超音数在一段时间内的访问用户数是多少?这些用户的访问次数和停留时长是怎样的?这些用户来自哪些部门?这些用户看了哪些页面?分别看了多少次?等我们建模完成, 这些问题的答案也就浮出水面了。 +为了帮助你更好地理解建模的过程, 我们通过一个问题示例来进行介绍: SuperSonic本身作为一个产品, 那么如何用语义建模来统计它的埋点访问数据呢?比如SuperSonic在一段时间内的访问用户数是多少?这些用户的访问次数和停留时长是怎样的?这些用户来自哪些部门?这些用户看了哪些页面?分别看了多少次?等我们建模完成, 这些问题的答案也就浮出水面了。 ### **1. 创建一个数据库链接** 在开始探索之前, 你首先需要创建一个数据库链接来连接你的数据库, 以便后续获取数据。在SuperSonic中,主要支持JDBC类型的数据库链接,创建一个数据库连接主要分为 @@ -11,7 +11,7 @@ 2. 点击测试连接, 若连接测试通过, 则可点击保存。否则, 返回步骤1 3. 点击保存。 -如图1-1所示, 由于超音数的埋点访问数据被存放在H2数据库中, 因此我们创建了一个H2数据库实例作为例子。除了H2数据库以外, 我们还支持MySQL, ClickHouse, PG等多种常见数据库。 +如图1-1所示, 由于SuperSonic的埋点访问数据被存放在H2数据库中, 因此我们创建了一个H2数据库实例作为例子。除了H2数据库以外, 我们还支持MySQL, ClickHouse, PG等多种常见数据库。
@@ -25,8 +25,8 @@ **使用者**: 可以使用这个数据库链接查询数据的人 -### **2. 创建一个主题域** -接下来, 用户可以按自己的业务场景去创建主题域, 然后在主题域下面创建具体的模型集。如图2-1所示, 为了统计超音数的埋点访问情况, 我们创建了一个叫"超音数"的主题域以及基础超音数的埋点数据创建了一个"埋点模型集": +### **2. 创建一个主题域和模型集** +接下来, 用户可以按自己的业务场景去创建主题域, 然后在主题域下面创建具体的模型集。如图2-1所示, 为了统计SuperSonic的埋点访问情况, 我们创建了一个叫"超音数"的主题域以及基于SuperSonic的埋点数据创建了一个"埋点模型集":
@@ -34,7 +34,7 @@
### **3. 创建数据模型** -创建好了一个模型集后, 我们就可以把物理数据抽象为一个个数据模型并创建到模型集下。在超音数中, 数据模型是对数据库中数据的一种逻辑层面上的抽象, 它既可以直接指代一张物理表, 也可以由一段SQL逻辑表示而成。数据模型中涉及的字段可被指定为维度或者度量, 而这些维度和度量又可以衍生出更复杂的维度和指标。如图3-1, 超音数提供了两种创建数据模型的方式。 +创建好了一个模型集后, 我们就可以把物理数据抽象为一个个数据模型并创建到模型集下。在SuperSonic中, 数据模型是对数据库中数据的一种逻辑层面上的抽象, 它既可以直接指代一张物理表, 也可以由一段SQL逻辑表示而成。数据模型中涉及的字段可被指定为维度或者度量, 而这些维度和度量又可以衍生出更复杂的维度和指标。如图3-1, 超音数提供了两种创建数据模型的方式。

图3-1 数据模型创建方式

@@ -54,49 +54,73 @@

图3-3 SQL脚本

-如图3-4所示, 执行完SQL之后, 根据SQL执行结果, 需要填写一些字段信息, 把数据模型的字段指定为维度或者度量, 其中日期和主键为特殊的维度。 +我们可以把这些字段指定为**日期,主键,维度和度量**并快速创建到维度/指标列表,也可以不指定。其中日期和主键为特殊的维度。作用如下: -**维度**主要用于筛选和分组 +**维度**主要用于筛选和分组,在选定为维度之后,若需要把它快速创建到维度列表中,可以勾选好快速创建按钮,并填写好它的中文名称。同时,若把该维度设置为标签,则在后续使用中,可以把它当作标签来使用。如一个名为"风格"的标签,则可以在后续问答对话中,用来圈选实体,如"国风风格的艺人"就可以命中明细模式来圈选艺人。 -**度量**主要标识数值类型字段, 用来进行聚合计算 +**度量**主要标识数值类型字段,用来进行聚合计算,把字段选中为度量之后,可以进一步选择该度量的聚合方式。度量可在后续用来创建指标,当然,也可以在这一步填写好中文名称后,就可以立即创建为指标。 -**日期字段**主要用于标识, 方便问答进行数据查询。 +**日期**类型维度主要用于标识,方便问答进行数据查询。 -**主键**则用于不同数据模型之间的连接字段, 有了连接字段后,就可以在画布进行连接关系的配置, 配置完成, 在查询模型数据的时候, 多个模型之间就可以进行Join连接了 +**主键**则用于不同数据模型之间的连接字段,有了连接字段后,就可以在画布进行连接关系的配置,配置完成,在查询模型数据的时候,多个模型之间就可以进行Join连接了。同时,可以通过在主键上绑定标签对象来把主键设置为实体,比如在歌曲ID这个主键上绑定"歌曲"这个标签对象,那么在后续问答会话中问到"给我一批流行歌曲"的时候,可以通过"流行"这个标签值来圈选出一批歌曲ID。 +把字段指定为**维度/度量**之后,还可选择是否勾选**快速创建**单选框。若勾选,则会直接把选中的维度/度量批量创建到维度/指标列表。 + +若不勾选,但字段已被选定为维度/度量,该字段虽然不会直接被创建到维度/指标列表,但是后续在创建衍生维度/指标的时候也可作为表达式中的字段被用上。 + +最下面的过滤SQL用于词典导入场景。举个例子,在问答中,如果需要对维度值进行识别,那么就需要提前把维度值写入到词典,但是当我们希望对维度值做一些过滤的时候,如在音乐场景里,我们只希望把国风类型的歌曲导入到词典中,那么就可以通过这条SQL来进行过滤。
- +

图3-4 数据模型字段信息

+以上就是基于SQL脚本来创建模型的基本介绍,接下来我们来介绍如何通过指定库表名来快速创建模型: +
+ +

图3-5 快速创建模型

+
+如图,在选择快速创建的方式之后,需要先填写该模型依赖的数据库连接,然后系统会自动拉取这个数据库连接的元数据,用户直接选择库名和表名并填写基本信息就可以进入到下一步。 +在第二步中,和上述通过SQL脚本来创建模型的方式基本一致,就不再重复介绍了。如图3-6所示, 重复以上步骤,为我们创建的3个数据模型示例, 分别为: -把字段指定为维度/度量之后, 还可选择是否勾选**快速创建**单选框。若**勾选**, 则会直接把选中的维度/度量批量创建到维度/指标列表。 -若**不勾选**, 但字段已被选定为维度/度量, 该字段虽然不会直接被创建到维度/指标列表, 但是后续在创建衍生维度/指标的时候也可作为表达式中的字段被用上。 -如图3-5所示, 为我们创建的3个数据模型示例, 分别为超音数用户停留时长统计, 访问次数和访问人数统计, 用户部门统计。 +**用户部门**: 主要包含用户以及用户的部门信息 + +**PVUV统计**: 主要包含用户访问次数和访问人数等信息 + +**停留时长统计**: 主要包含用户的停留时长信息
-

图3-5 模型列表

+

图3-6 模型列表

+同时,在刚刚创建模型时,我们把一些字段标识为了维度/度量,并勾选了快速创建,因此,可以在对应模型中的指标维度列表看到已快速创建好的指标维度: +![image](https://github.com/tencentmusic/supersonic/assets/22031277/3538b4c2-9772-4a7a-ac39-b6864c00ec0a) +![image](https://github.com/tencentmusic/supersonic/assets/22031277/214d89ce-8137-486e-b869-948f0605c811) -### **4. 创建维度** -如图4-1, 为刚刚创建数据模型时, 通过勾选**快速创建**按钮创建出来的维度。分别为用户名, 用户所在的部门, 用户浏览过的超音数页面。 +![image](https://github.com/tencentmusic/supersonic/assets/22031277/b68293d0-d52c-4319-a86d-11b34b0b2e68) + +到此为止, 我们就成功把超音数的访问统计数据建模成了相关的数据模型、维度和指标。 + +### **6. 创建模型间连接** +可以看到,刚刚创建的这些指标和维度分散在不同的模型里,那么如果想要在一次查询里同时包含这些指标和维度,如"按部门统计访问次数",应该还要继续如何配置呢?我们可以在模型列表右上角点击切换到画布模式,并创建模型间的连接关系,如下图: +![image](https://github.com/tencentmusic/supersonic/assets/22031277/0efcf4fe-42e7-4aa6-9117-9e2862c9462c) + +到目前为止,我们就创建好了指标维度,以及模型间的关联关系。但要想被上层应用使用到,这还不够,还需要进行最后一步,创建一个数据集。 +### **7. 创建数据集** +数据集是SuperSonic用来对接问答和其它上层BI应用的一个数据结构,在数据集中,可包含多个模型的维度指标。对上层应用来说,底层建模细节是隐藏的,它只需要关注数据集中暴露出来的维度指标即可。
- -

图4-1 维度列表

+ +

图7-1 创建数据集

-若我们需要更复杂的维度, 如我们需要根据页面来划分模块, 那我们可以点击创建按钮来创建一个更复杂的维度。如图4-2所示 +如上图7-1,创建数据集时,首先填写好数据集的名称等基本信息,然后即可进入到下一步,选择模型以及模型的指标维度,如图7-2,把上面创建的来自三个模型的指标维度全部加入 +到数据集中,由于这三个模型已经在画布中创建了连接关系,因此对于使用数据集的上层应用来说,只需要对指标维度进行使用即可,而不用担心底层的建模细节。
- -

图4-2 维度创建

+ +

图7-2 创建数据集-下一步

-### **5. 创建指标** -和维度类似, 如图5-1为通过**快速创建**按钮创建出来的指标, 分别为访问超音数的次数, 人数和停留时长。这几个指标都可以在用户、部门 、页面等分组粒度上进行计算。 -
- -

图5-1 指标列表

-
+到此为止,就算是完成了所有的建模环节,开头提到的那些示例问题,也都可以在问答中通过自然语言的方式进行愉快的探索了! + + + -到此为止, 我们就成功把超音数的访问统计数据建模成了相关的数据模型、维度和指标。通过在问答中直接对这些维度和指标进行提问, 就可以回答我们在介绍开头提到的那些问题啦! \ No newline at end of file