语义层包含两种类型的文件:元数据文件(.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 item、Aggregate item。
Field item包括表的字段名、伪字段名、外键名等设定。在设定时可以为Title、Field item和Aggregate item定义别名。
Ø 维项
元数据中表A的外键指向表B的主键,当这个表B主键非外键时,它被称为维。维项设定中,可以为元数据中的维定义别名。
通过设定维项的Code field name和Display field name,在WEB端处理维条件时,如通过显示值设定维过滤条件,在维的查询结果中按显示值处理等。
Ø 分类项
设定Class item可将当前元数据文件中的所有表进行分类。设置分类项后,可在WEB查询界面中通过选择分类项展现当前分类下不同的表信息。
Ø 导入元数据
字典文件中的内容除了通过菜单逐个添加,还可以直接导入元数据,将元数据中的表、字段名、伪字段名、外键名和维项全部导入到字典中。
导入方法如下:
在菜单中执行Tool - Load logical metadata,选择要导入的元数据文件,导入后,各个表项、维项和分类项的名称默认与其在元数据中定义的名称相同:
如果选择了选项Delete tables and fields that are not in metadata,则字典中已存在而元数据中不存在的表、字段项和维将被删除。
例如导入示例文件demo.glmd,导入后的字典文件结构如下: