BIEE 11g 两种方法实现同时显示当天销量及上月最后一天销量

2012/6/29:此文第二种方法有误!

 

今天有网友提出一个问题,怎样在报表中同时显示当天销量及上月最后一天销量,

如下图所示:

 

BIEE 11g 两种方法实现同时显示当天销量及上月最后一天销量_第1张图片

 

注意几个地方:

1、提示是单选

2、日期字段上有过滤器

 

怎么实现呢?很简单,直接在上月最后一天销量这个字段里添加如下公式即可:

ago("Base Facts"."1- Revenue",DAYOFMONTH(@{select_date}{CURRENT_DATE}))

 

然后在仪表盘提示上设置select_date表示变量(注:该提示同样来自于T00 Calendar Date字段,主要是为了保证类型一致,而无需转换)

 

 

 

OK,完成这个之后让我们进一步考虑问题,如果我这个字段不是单选怎么办?用上面的方法还可行吗?

有人说可以,用下面的公式就可以了:

ago("Base Facts"."1- Revenue",DAYOFMONTH("Time"."T00 Calendar Date"))

不过很遗憾这样是不可以的,因为AGO 函数的最后一个参数必须为常数整数。 

DAYOFMONTH("Time"."T00 Calendar Date")并非一个常数整数,因为每行可能返回一个不同的值。

 

那怎么办呢?难道没有办法了吗?

有的,我们可以利用ago、last_period、在基于level的指标来实现。

 

具体步骤如下:

1、建立日期维度

2、新建一个Last Revenue指标,将其聚合规则按如下设置:

BIEE 11g 两种方法实现同时显示当天销量及上月最后一天销量_第2张图片

 

注意:将last设置在其他之后,否则性能会非常差,具体请查看SQL。另外,在11.1.1.5中,我们只有last函数可用,但是11.1.1.6中我们有类似的last_period函数可用

两者的区别就是,last忽略空值,而last_period不忽略。

3、新建一个Last Revenue Mago派生指标,其公式如下:

Ago("01 - Sample App"."F0 Sales Base Measures"."Last Revenue" ,  "01 - Sample App"."H0 Time"."Month" , 1)

并将其在时间维度的level设置为月

 

OK,设置完毕,生成报表,如下图所示:

BIEE 11g 两种方法实现同时显示当天销量及上月最后一天销量_第3张图片

 

 注意:last忽略了空值

你可能感兴趣的:(sql,Date,calendar,报表)