Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236664
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2009-03-18 15:13:52

Cognos8.3 Report Studio动态参数设计

Cognos8.3 Report Studio设计动态报表,利用工具本身特性,有两种方式,在Report Studio和Framework Manager设计实现。两者实现的方式看似一样,本质是有差异。Report Studio报表设计是基于Framework Manager封装好的结构模型,而Framework Manager是最接近底层模型设计,对多种约束限制,包括权限控制在内。我以Framework Manager设计为例,简单描述工具设计特性。



设计报表时,重要是对业务知识熟悉程度,还有考虑数据组织方式,在前端设计报表样式都有很大的关系,并不是所有复杂报表都可以用一种模式来实现,也不是所有报表一定严格按照业务部门提出的需求样式实现,我们可以灵通应用,一张可以拆分多张,目的是核对数据的准确性。



       Framework Manager设计逻辑模型封装时,首先考虑参数是怎么传递,在前端触发一个事件,调用相应的子查询,返回数据到页面。举例说明:

       机构维度层级表:V_D_ORG_LVL_DIM

       事实表或者分析汇总表:TA_CLM_TDM_ANLY

       建立关联关系:1:N




动态参数设计

修改V_D_ORG_LVL_DIM抽取数据脚本,利用Cognos自带宏变量,接受外界参数,得到返回结果。

表达如下:

Select    *  from   [BIDM].V_D_ORG_LVL_DIM

where  V_D_ORG_LVL_DIM.ORG_LVL_ID=#prompt('org_lvl_id','integer')#

在设计中,会看到“#prompt('org_lvl_id','integer')#”,这是利用Cognos的宏变量,其中的表达式,可以编辑。


如:prompt提示输入函数。

prompt ( prompt_name , datatype , defaultText , text , queryItem , trailing_text )

提示用户输入单个值。只需 prompt_name 自变量。未指定时,数据类型默认为字符串。指定默认文本时,提示是可选的。指定文本后,文本会在值前面。可以指定 queryItem 以利用查询项目的“Prompt Info”属性。指定 trailing_text 后,trailing_text 会附加到值的后面。

示例:

_select . . .

where COUNTRY_MULTILINGUAL.COUNTRY_CODE  > #prompt('Starting CountryCode', 'integer','10')#

结果:选择。. . 其中,COUNTRY_MULTILINGUAL.COUNTRY_CODE > 10

对V_D_ORG_LVL_DIM进行测试,点击“Test Sample”,弹出提示值窗口。如下图:


输入参数值,返回想要的结果。

在前端页面设计时,Framework Manager提示的参数会在前端体现,类似于自定义参数。


当添加一个提示控件时,选择使用现有参数,下拉列表会找到模型提示参数项。

这种设计思路,有利于复杂报表调用,如:过程调用,模型复杂脚本调用等。都是动态数据抽取,根据前端选择参数,控制后端数据执行。

注意:Cognos对过程调用,实现不是很理想,不能真正返回一个结果集到“Query Subject Definition”中,事实上,过程返回的结果只有一条记录,就是过程执行完之后输出过程执行的结果。还有一种设计思路,是把过程中的代码调整统计语句,放置在Framework Manager查询模块中,但Cognos本身不是友好支持所有数据库语法,对特殊函数不支持,自身函数有限。简单SQL语法可以满足,重要工作放在ETL来处理。

过程调用:在数据源添加一个过程,这个过程包含输入参数和输出参数。输出参数是用来返回结果。
过程中的参数定义,设置为宏变量参数,利用前端页面输入参数调用过程。

源过程:

SP_REFRESH_ALL_MVIEW(V_INDATE IN_ characterLength16, V_SQLCODE OUT float64 );
指定参数,进行测试。
阅读(1234) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~