维词

阅读(6) 标签: 维词, 维名称, 维词名称,

数据结构右侧点击编辑页面,并在词典项中选择维词,可以看到这里已经读入了很多维词,这是在执行导入元数据时完成的,即使只选择了一个数据表,也会把元数据中所有的维的信息全部引入过来:

与字段词类似,对于各个维,也可以设置维词维名称需要和元文件统一,维词则通常会根据需要,设置为合适的中文词:

再来看看前面元数据文件中EMPLOYEE表中的外键信息:

在元数据中设置的各个维之间根据层函数转换的处理,也可以在汉语查询词典中通过维的设置实现,特别是日期时间数据的转换,如查询“出生日期1985 姓名职务年龄”:

出生日期字段在外键关联中,是与Day()关联的,但通过层函数的转换,也可以从中获取“年”这个维的数据,从而查到所需结果。

 

元数据文件中,EMPLOYEE表的外键fk4,设置的是籍贯城市与城市表的关联,表中的HOMECITY字段实际存储的是各个城市对应的编码。此时虽然并未引入城市表及其宏字段,但可以通过在维词中设置常数词使得相应的城市名称可以作为搜索语句中的常数使用。为此,在维词列表中选择CITY

如果加载了元数据,则可以在下方的常数词设置区域,点击用表字段值生成常数词,即使元数据中对应的表并未引入,也可以用其生成常数词。我们在前面导入元数据中的表时,已经选择了加载元数据,此时选择后,生成的窗口如下:

可以在常数词名称一列中的数据,修改为真实值对应的实际城市后点击确定,将各个常数词将被添加到“城市”维词的常数词列表。也可以直接点击确定,结果如下:

此时可以用集算器辅助设置常数词,如:

在集算器中查询出城市名称后,复制数据。回到常数词编辑这边,在常数词名称一列中选择第一行的格子:

点击从当前格向下粘贴,即可将城市名称复制到常数词列表中:

 

城市维词中的常数词设置完毕后,城市代码中存储的数据,就可以和每个常数词对应起来了,如“北京”这个常数词,对应的真实值就是城市编码30101,汉语查询可以在查询时处理,如:

这里的搜索语句中,“北京”并不是字段词,会被认为是常数,而它被设为了常数词,则会自动关联到对应的“城市”维,从而在与这个维关联的字段数据中执行筛选。上面的查询语句中虽然没说明“北京”对应哪个字段,汉语查询也会自动处理。

在结果中,籍贯城市的列名显示为HOMECITY,这是因为搜索语句中没有给出对应的字段词,此时将会显示宏字段标识,如果需要在这种情况下也显示中文标题,可以修改宏字段的标识。

如果未定义常数词,上面的查询就要指明对应的字段词“籍贯”,以及“北京”对应的真实值,搜索语句用“姓名 职务 年龄,籍贯30101”,由于年龄和籍贯都是数值类型的字段,如果它们之间没有用逗号隔开,会无法识别30101是指哪个字段的值。这也就是说,“姓名 职务 年龄 籍贯30101”搜索时,会认为在查找“年龄和籍贯都是30101的员工的姓名和职务”,这就有可能产生歧义了。因此,在维词中定义常数词,不仅可以使得数据表中的外键字段与实际含义产生关联,还能有效避免查询同类型字段时可能产生的歧义。

有些维词并没有实际对应的表,如性别。此时的常数词需要手动输入,如:

维表中的真实值,可能会对应多个常数词,需要分别列出。

多个维词中的常数词,可以在搜索语句中同时使用,如:

有时候,维词中的常数词,对应的真实值并不是固定的,而是需要计算得出,如:

“今年”到底是哪一年,这需要根据当前时刻去计算,此时的真实值需要用表达式设定,在这种情况下,需要勾选右侧的值是表达式类型。在这里定义表达式时,同样需要使用标准SQL函数