假表

阅读(166) 标签: 假表,

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

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

 

  

 

说明:

1)  系统已为日期维度预定义常用层函数

datetime

日期时间维度

date

日期维度,年月日

time

时间维度分量,总是精确到秒

year

season

month

day

mday

月日

week

星期几,1表示星期天

yseason

带有年的季

ymonth

带有年的月

weeks

总第几周

yweeks

当前的第几周

sweeks

当季的第几周

mweeks

当月的第几周

hour

小时

minute

分钟

2) 层间计算式也可以理解为从细向粗计算。比如“date”维,只能从年月日算出年,不能从年算出年月日。

3) 目标维可分别通过多个源维进行换算。比如“year”维,可能是从年月日聚集到年,也可能从年月聚集到年,因此,对于“year”维,就要定义两个层间计算式,分别从“date”表的日期和“ymonth”表的年月计算而来。

接下来可以在DQL中直接使用定义定义好的日期层函数,如下例:

 

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

 

这样,我们就可以在DQL中获得RDate的年、月等信息了,如RDate#year,得到RDate的年份,RDate#ymonth就得到了RDate的年月

DQL: SELECT CustomerID,ID,RDate,RDate#ymonth 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 ymonth FROM ReturnedPmt by RDate#ymonth