假表是一种虚拟的单字段无记录表,可以视为普通表来使用,主要用于在无实体表的场景下定义维度层次,如时间维度通常没有实体表,此时就可以通过假表实现。
以demo.glmd中通过Day、Year、YearMonth三张假表定义的日期层次为例:



说明:
1) 系统已为日期维度预定义常用层函数:
|
year |
年 |
|
season |
季 |
|
month |
月 |
|
day |
日 |
|
week |
星期几,1表示星期天 |
|
yseason |
带有年的季 |
|
ymonth |
带有年的月 |
|
weeks |
总第几周 |
|
yweeks |
当前的第几周 |
|
sweeks |
当季的第几周 |
|
mweeks |
当月的第几周 |
2) 层间计算式也可以理解为从细向粗计算。比如“Day”维,只能从日算出年,不能从年算出日。
3) 目标维可分别通过多个源维进行换算。比如“Year”维,可能是从日聚集到年,也可能从年月聚集到年,因此,对于“Year”维,就要定义两个层间计算式,分别从“Day”表的日期和“YearMonth”表的年月计算而来。
接下来可以在DQL中直接使用定义定义好的日期层函数,如下例:

ReturnedPmt表中RDate是个日期类型,在ReturnedPmt表的外键定义中,我们将“ReturnedPmt”表的字段Date与“Day”表的字段Day建立外键关系,如下图:

这样,我们就可以在DQL中获得RDate的年、月等信息了,如Date#Year,得到RDate的年份,RDate#YearMonth就得到了RDate的年月
DQL: SELECT CustomerID,ID,RDate,RDate#YearMonth YearMonth,RDate#Year Year,Amount,SellerID FROM ReturnedPmt

DQL: SELECT sum(Amount) Sum_Amount ON Year FROM ReturnedPmt by RDate#Year

DQL: SELECT sum(Amount) Sum_Amount ON YearMonth FROM ReturnedPmt by RDate#YearMonth