语义层

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

语义层包含两种类型的文件:元数据文件(.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,导入后的字典文件结构如下:

制作可视文件

使用元数据编辑设计器可制作.gvsb格式的可视文件,它可以和引擎一起部署在WEB服务器上,对于不同用户可配置不同的可视文件,从而实现给不同用户分配不同的访问权限。

可视文件有两种制作方式,一种是在glmd元数据编辑界面中,点击Tool – Create visibility,即可对当前元数据编辑文件中的所有表设置可见性;

另一种是直接创建空白的可视文件,具体操作如下:

打开元数据编辑设计器,在菜单栏中点击File - New,选择Visibility创建可视文件:

 

点击【OK,进入可视文件设计界面。

在菜单中点击 Tool - Load logical metadata,将demo.glmd元数据文件中的表导入:

Delete tables and fields that are not in metadata:删除不在元数据内的表和字段,勾选状态时,可以将可视文中已存在而元数据中不存在的表、字段删除。

可见性设定的界面如下:

 

Ø  表可见性

元数据文件中的表,均可以设定可见、不可见或者条件可见。

 

当表可见时,可以通过DQL查询语句正常查询该表的数据。

当表不可见时,在DQL中查询该表数据时会报错。

表设为条件可见时,将根据设定的条件,在查询表的数据时强制过滤。这样,通过使用不同的可见性配置文件,可以使得不同的用户浏览到的记录不同。

如将emps表的表可视属性设为条件可见:

 

此时对emps表用DQL查询:SELECT EID, Name,Dept FROM emps,相当于SELECT EID, Name,Dept FROM emps WHERE Dept='Sales'

Ø  字段可见性

DQL除了可设置表可见性还可以设置字段可见性Invisible field 中可选择不可视字段,比如设置Employee表中的BossTitle字段不可视:

 

设定为不可视的字段,在DQL的查询中将不允许使用。