假表

阅读(4) 标签: 假表,

假表是一种虚拟的单字段无记录表,可以视为普通表来使用,主要用于在无实体表的场景下定义维度层次,如时间维度通常没有实体表,此时就可以通过假表实现。

demo.glmd中通过DayYearYearMonth三张假表定义的日期层次为例:

 

 

 

说明:

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表的字段DateDay表的字段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