语义层

阅读(1474) 标签: 语义层,

语义层包含两种类型的文件:元数据文件(.glmd)、字典文件(.gdct)。元数据文件中包含各个虚表的定义以及DQL表间关系;字典文件定义DQL表或字段的别名。

上面章节我们已经了解如何制作元数据文件,本小节我们将介绍元数据文件中DQL表的主要配置,以及字典文件的基本制作步骤和主要配置。

 

注意:[集算器安装路径]\esProc\esproc-services\datalogic\conf下提供了一套完整的元数据(demo.glmd)/字典(demo.gdct)示例文件。本章节接下来的演示皆是用的此套示例文件。

基础元数据设计

元数据文件使用元数据编辑设计器编辑,文件的默认扩展名为.glmd。它可以和DQL Server的驱动包一起部署在服务器端,客户端以标准JDBC的连接方式连接访问。

以示例文件demo.glmd(虚表和DQL表均已定义完成)为例,打开后切换到DQL

下面主要对DQL表中的配置做详细介绍。

Ø 

DQL表有两种,普通表和假表,在这里先介绍普通表。

普通表的Table source name必须和虚表中的表名完全一致。Table name可以自行修改。

Normal页面中,可以设定表的字段,Data source需要和虚表中的字段名相同。Field name默认和数据来源相同,可以自行修改。

新建普通表不仅可以手动点击菜单添加外,还可以直接由一个或多个虚表生成,方法如下所示:

在菜单栏中点击Tool - Generate table from pseudo table

然后在弹出窗口中选择想要创建的表即可。

可在When the table name already exists下拉框中选择原表和新表的替换情况。

Keep both tables (add a suffix to the new table):新表和原表同名时,新表表名增加后缀_bak

Keep original table:保留原表,忽略新表。

Replace the original table with the new table:删除原表,使用新表。

Ø  主键

用来唯一确定记录的字段,主键从虚表使用的组表文件中继承或者从序表/内表的选出字段的主键设置中继承。

DQL表中设定的主键主要用来定义外键和维,设定时只需要勾选字段后面Primary key的复选框即可,可以为主键选择属性:主键包含时间键、主键是序号键。

 

与数据库中的情况相似,一个表的主键可以是一个,也可以是多个;单一主键的值,或者多个主键值的组合,在一个表中应该具有唯一性

元数据中DQL表的主键可以人为设定,在设定主键时一定要注意主键的合理性,在定义表的多个主键时,DQL Server不会验证主键设定是否合理。如果设定的主键值在表中不唯一,或者主键属性选择有误,在查询或者汇总计算时可能产生错误。

假表、子表等更高级的元数据制作介绍可参考高级元数据设计小节。

字典文件设计

字典文件可以使用元数据编辑设计器编辑,存为.gdct格式的文件。它可以和引擎一起部署在服务器上,客户端通过字典中定义好的表或者字段的别名、字段显示格式、代码显示值等设置,访问元数据定义的数据。字典中的别名设定,与DQL无关,需要在服务器中分析处理,是无法在DQL语句中使用的。

打开元数据编辑设计器,在菜单栏中点击File - New,创建字典文件:

点击【OK,进入字典文件设计界面。

如下图所示,这是设计好的字典文件demo.gdct后面我们会逐步对字典文件中的配置做详细介绍。

 

Ø  表项

Table item设定中,包括Title、每个表中的各种Field itemAggregate item

Field item包括表的字段名、伪字段名、外键名等设定。在设定时可以为TitleField itemAggregate item定义别名。

Ø  维项

元数据中表A的外键指向表B主键,当这个表B主键非外键时,它被称为维项设定中,可以为元数据中的维定义别名。

通过设定维项的Code field nameDisplay field name,在WEB端处理维条件时,如通过显示值设定维过滤条件,在维的查询结果中按显示值处理等。

Ø  分类项

设定Class item可将当前元数据文件中的所有表进行分类。设置分类项后,可在WEB查询界面中通过选择分类项展现当前分类下不同的表信息。

Ø  导入元数据

字典文件中的内容除了通过菜单逐个添加,还可以直接导入元数据,将元数据中的表、字段名、伪字段名、外键名和维项全部导入到字典中。

导入方法如下:

在菜单中执行Tool - Load logical metadata,选择要导入的元数据文件,导入后,各个表项、维项和分类项的名称默认与其在元数据中定义的名称相同:

如果选择了选项Delete tables and fields that are not in metadata,则字典中已存在而元数据中不存在的表、字段项和维将被删除。

例如导入示例文件demo.glmd,导入后的字典文件结构如下: