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

浏览: 2230

备注: 此文第二种方法有误!

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

如下图所示:

 

 

注意几个地方:

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指标,将其聚合规则按如下设置:

 

注意:将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,设置完毕,生成报表,如下图所示:

 

 注意:last忽略了空值

推荐 0
本文由 风在身后 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册