cognos维度层次过滤汇总

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://<server-name>/cognos8/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/launch.xts

这里运行报表有一个常见的问题,就是乱码的问题,如果url中有中文字符串,需要进行转码.(记得只对参数值转码即可,千万别把整个url都进行转码了,转换的编码使用utf-8即可)

Java中使用java.net.URLEncode.encode()转码即可,其他的还没有试过,有别的事例希望大家share一下.

 

 

 

在一个查询中,查询的结果行中包含了上下两个级别的数据,如第一行是江西省的数据,第二行是景德镇的数据,第三行是广东省

区域               产值                 区域级别

江西省           123454.1         省级

景德镇           3452.2             市级

广东省           445666.3         省级

合计               569120.4      

     此合计值景德镇的值未参与计算,原因是已经包含在江西省的数值中了,那么该合计值不能自动生成,而是要使用total函数,书写方式如下:

     total(currentMeasure within set filter([区域], [区域级别] = ‘省级’))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值