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 );
指定参数,进行测试。
阅读(1249) | 评论(0) | 转发(0) |