同比 数据模型 环比_再谈Cognos利用FM模型来做同比环比

很早之前已经讲过 《Cognos利用DMR模型开发同比环比》这篇文章里说的是不利用过滤器,而是采用

except (lastPeriods (-9000,[订单数据分析].[日期维度].[日期维度].[日]->?bdate?),lastPeriods (-9000,nextMember ([订单数据分析].[日期维度].[日期维度].[日]->?edate?)))+特殊函数的方式来实现的,下面我们就来采用过滤器来实现一些同比环比.

首先,在数据库设计好标准日期维度(年-季度-月-日),如下图所示

其次新建数据项

total([挂号量] within set parallelPeriod([门诊挂号同环比].[年月日].[年月日].[年],1,currentMember([门诊挂号同环比].[年月日].[年月日])))--同比

total([挂号量] within set parallelPeriod([门诊挂号同环比].[年月日].[年月日].[月],1,currentMember([门诊挂号同环比].[年月日].[年月日])))--环比

需要注意的是:添加过滤器

[月键]

between

?b_month?

and

?e_month?

过滤器属性设置为:自动聚合之后

PS:采用了同比环比之后,在过滤器上过多的对日期计算会有一些错误,如下图

Hierarchy expexted only的意思是 :预期只有层次

处理办法:由于日期key是20150101这样int类型的,而选择还是日期提示,所以在RS中可以同时使用日期提示和值提示,利用

JS,给值提示赋值,例如20150717为默认值等等,日期提示的作用只是供用户选择,用户选择事件完成后,立刻把选择的起始日

期赋值给值提示,过滤器的参数采用值提示的.过滤中采用datekey between 20150101 and  20150102 或者 monthkey

201501 and  201502的格式

然后就没什么问题了.

分享选择日期提示后,赋值给值提示的JS:

//得到上一个月

function getlastmonth()

{var form=getFormWarpRequest();var b_date=form.txtDateb_date1.value;var e_date=form.txtDatee_date1.value;//为值提示赋值

var barray=newArray();var earray=newArray();

barray=b_date.split("-");

earray=e_date.split("-");var str_bmonth=barray[0] +addzero(barray[1]);var str_emonth=earray[0] +addzero(earray[1]);var returnstr=str_bmonth+'_'+str_emonth;//alert(returnstr);//为月份的值提示赋值

var mylist1=form._oLstChoicesbmonth;//粗体部分为提示页面中值提示的名称,而不是参数名称。

var mylist2=form._oLstChoicesemonth;//粗体部分为提示页面中值提示的名称,而不是参数名称。

var bop=newOption;var eop=newOption;

bop.value=str_bmonth;

eop.value=str_emonth;

bop.text=str_bmonth;

eop.text=str_emonth;

mylist1.options.add(bop);//给开始日期的值提示赋值

mylist2.options.add(eop);//给结束日期的值提示赋值

mylist1[2].selected="true";//默认为选择

mylist2[2].selected="true";//默认为选择//提交form

promptButtonFinish();

}//转换格式2015-5为2015-05

function addzero(str)

{varreturnstr;if(str>0&&str<10)

{

returnstr=0+str;

}else{

returnstr=str;

}returnreturnstr;

}

查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值