首页 技术 正文
技术 2022年11月7日
0 收藏 867 点赞 265 浏览 2534 个字

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

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

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

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

其次新建数据项

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

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

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

[月键]
between
?b_month?
and
?e_month?

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

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

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

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

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

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

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

201501 and  201502的格式

然后就没什么问题了.

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

<script>
//得到上一个月
function getlastmonth()
{
var form=getFormWarpRequest();
var b_date=form.txtDateb_date1.value;
var e_date=form.txtDatee_date1.value;
//为值提示赋值
var barray=new Array();
var earray=new Array();
barray=b_date.split("-");
earray=e_date.split("-");
var str_bmonth=barray[] +addzero(barray[]);
var str_emonth=earray[] +addzero(earray[]);
var returnstr=str_bmonth+'_'+str_emonth;
//alert(returnstr);
//为月份的值提示赋值
var mylist1=form._oLstChoicesbmonth;//粗体部分为提示页面中值提示的名称,而不是参数名称。
var mylist2=form._oLstChoicesemonth;//粗体部分为提示页面中值提示的名称,而不是参数名称。
var bop=new Option;
var eop=new Option;
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[].selected="true";//默认为选择
mylist2[].selected="true";//默认为选择
//提交form
promptButtonFinish();}//转换格式2015-5为2015-05
function addzero(str)
{
var returnstr;
if(str>&&str<)
{
returnstr=+str;
}
else
{
returnstr=str;
}
return returnstr;
}
</script>
<button type="button" name="tijiao" id="tijiao" class="bp" onmouseover="this.className = 'bp bph'" onmouseout="this.className = 'bp'" onclick="getlastmonth()" style="padding-left:10px;padding-right:10px;">查询</button>
<body onload="">
</body></div>

分享为日期提示,值提示设置默认值的相关代码

var firstDate = new Date();
firstDate.setMonth(firstDate .getMonth()-);
firstDate.setDate(); //第一天
var endDate = new Date(firstDate);
endDate.setMonth(firstDate.getMonth()+);
endDate.setDate();
//alert("第一天:"+new XDate(firstDate).toString('yyyy-MM-dd')+" 最后一天:"+new XDate(endDate).toString('yyyy-MM-dd') );
//第一天:2015-05-01 最后一天:2015-05-31
pickerControlb_date.setValue(new XDate(firstDate).toString('yyyy-MM-dd'));
pickerControle_date.setValue(new XDate(endDate).toString('yyyy-MM-dd'));

效果:

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

最后需要补充一点,发布该数据包的时候,请以动态查询方式发布,这里的同比函数可能需要动态查询方式才可以起到作用

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,107
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,583
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,430
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,201
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,836
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,919