1,以下图略,
需要显示等级[0]的相关资讯,只需要将此[0]成员直接拉入维度中即可。
2,需要显示等级[0]和[1]的total数据,可以如下两种方法:
a, 做两个数据项表达式,[1]:IF ( [1] is null) THEN (0) ELSE ([1]) 和[2]:IF ( [2] is null) THEN (0) ELSE ([2]),然后total数据项a(M0+M1):[1]+[2]即可得出结果;
b, 可以做一个数据项t(M0+M1),如:member(aggregate( currentMeasure WITHIN SET [M0+M1] ), 'calc_uuid:***********', '合计', hierarchy([M0+M1])),其中[M0+M1]为:set([0],[1])
3,求%比。比如要求本月贷款占等级[0]和[1]total数据的百分比:
a,[本月贷款余额]/tuple(a(M0+M1),[本月贷款余额])
b,[本月贷款余额]/tuple(t(M0+M1),[本月贷款余额])
4,需要层级显示成员数据,只需要双击父项成员即可,其中“子项”显示其父项的数据,也即以下子项的total数据,图略。
5,维度交叉和指标、维度交叉数据项用tuple函数。比如短期贷款:tuple([短期],[一般贷款]) 其中[短期]为[6月内]+[6-12月],其中比数为:tuple([存量],[笔数])。
6,根据传入的参数来显示确定维度。
[cube].[日期].[日期].[日期(YYYYMMDD)]为level级,非member
上日:prevMember(cube.[日期].[日期].[日期(YYYYMMDD)]->?日期?)
当日:package.[日期].[日期].[日期(YYYYMMDD)]->?日期?
下日:nextMember(cube.[日期].[日期].[日期(YYYYMMDD)]->?日期?)
当月:ancestor([当日],1)
上月:prevMember(ancestor([当日],1))
http://blog.163.com/hurryup_1/blog/static/49384979201022902228416/
完整url实例:(*参数名称区分大小写切记)
http://192.168.1.103/cognos10/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/launch.xts&ui.tool=CognosViewer&ui.object=
/content/package[@name='pk_ds_yjzs__6']/report[@name='yjzs_rs_2']&ui.action=run&p_rylx=[ds_yjzs__6].[区划key].[区划key].[区划key1]->:[PC].[@MEMBER].[330100]&run.prompt=false
Run.prompt 是否显示提示页面,默认为true显示,这里选为false不显示 .
[ds_yjzs__6].[区划key].[区划key].[区划key1]->:[PC].[@MEMBER].[330100]
它是怎么来的呢? 打开查询,选择加过滤条件的维度数状结构
在这里成员中的每一项都是可以加到过滤条件中的,查看的方法,右键点击 [区划key],属性,成员唯一名称复制下来
也可以选择 [区划key]下级的其他成员,例如衢州,
P_qh 指的是传入的参数,与上面表达式中定义的区划相对应,(*千万记得传入的参数需要以p_开头)可以是一个也可以是多个.记得用&分开.
Ui.action 对文件的操作方式 run 运行报表,还有其他属性这里不再继续赘述 .
ui.object 对象的搜索路径 (可以在cognos门户->IBM Cognos内容->报表所在文件夹->报表属性->查看搜索路径 ID URL 中找到)具体步骤
ui.tool 打开文件的方式,可选CognosViewer/AnalysisStudio
访问的url包括以下url最基本的地址,加上特定的参数.
http://
这里运行报表有一个常见的问题,就是乱码的问题,如果url中有中文字符串,需要进行转码.(记得只对参数值转码即可,千万别把整个url都进行转码了,转换的编码使用utf-8即可)
Java中使用java.net.URLEncode.encode()转码即可,其他的还没有试过,有别的事例希望大家share一下.
在一个查询中,查询的结果行中包含了上下两个级别的数据,如第一行是江西省的数据,第二行是景德镇的数据,第三行是广东省
区域 产值 区域级别
江西省 123454.1 省级
景德镇 3452.2 市级
广东省 445666.3 省级
合计 569120.4
此合计值景德镇的值未参与计算,原因是已经包含在江西省的数值中了,那么该合计值不能自动生成,而是要使用total函数,书写方式如下:
total(currentMeasure within set filter([区域], [区域级别] = ‘省级’))