博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Cognos8.3函数使用手册(二)

Posted on 2011-09-09 10:27  徐正柱-  阅读(637)  评论(0编辑  收藏  举报

Cognos8.3函数使用手册(二)  

 
 

1         top and bottom functions

1.1         bottomCount

原型

bottomCount ( set_exp , index_exp , numeric_exp )

说明

此函数根据在"set_exp"的每个成员中算得的"numeric_exp"值对集进行排序,然后返回具有最小"index_exp"值的成员

案例

1、bottomCount([每日一览N].[产品].[产品].[险类+],9,[2008年])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[2008年]排列后9项

 

1.2         topCount

原型

topCount ( set_exp , index_exp , numeric_exp )

说明

此函数根据在“set_exp”的每个成员中算得的“numeric_exp”值对集进行排序,然后返回具有最大“index_exp”值的成员

案例

1、topCount([每日一览N].[产品].[产品].[险类+],9,[2008年])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[2008年]排列前9项

 

1.3         bottomPercent

原型

bottomPercent ( set_exp , numeric_exp1 , numeric_exp2 )

说明

此函数与 bottomSum 类似,但阈值是“numeric_exp1占合计的百分数

案例

1、bottomPercent([每日一览N].[产品].[产品].[险类+],5,[保单数量])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[保单数量]占总量的百分比5%

 

1.4         bottomPercent

原型

bottomPercent ( set_exp , numeric_exp1 , numeric_exp2 )

说明

此函数与 bottomSum 类似,但阈值是“numeric_exp1占合计的百分数

案例

1、bottomPercent([每日一览N].[产品].[产品].[险类+],5,[保单数量])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[保单数量]占总量的百分比5%

 

1.5         topPercent

原型

topPercent ( set_exp , numeric_exp1, numeric_exp2 )

说明

此函数与 topSum 类似,但阈值是“numeric_exp1占合计的百分数

案例

1、topPercent([每日一览N].[产品].[产品].[险类+],50,[保单数量])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[保单数量]占总量的百分比50%

 

1.6         bottomSum

原型

bottomSum ( set_exp , numeric_exp1 , numeric_exp2 )

说明

此函数根据在“set_exp”的相应成员中算得的“numeric_exp2进行排序,然后挑选出累加合计值至少为“numeric_exp1的最小项

案例

1、bottomSum([每日一览N].[产品].[产品].[险类+],50000,[保单数量])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[保单数量]累计和至少为50000的最小项

 

1.7         topSum

原型

topSum ( set_exp , numeric_exp1 , numeric_exp2 )

说明

此函数根据在“set_exp”的相应成员中算得的“numeric_exp2值进行排序,然后挑选出累加合计值至少为“numeric_exp1的最大项

案例

1、topSum ([每日一览N].[产品].[产品].[险类+],50000,[保单数量])

解释

1、返回[每日一览N].[产品].[产品].[险类+]维度,按[保单数量]累计和至少为50000的最大项

 

2        value functions

2.1         completeTuple

原型

completeTuple ( member { , member } )

说明

与“tuple”相似,它根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。 不过,completeTuple 暗指包括自变量中未另外指定的所有维度的默认成员,而非当前成员。 此单元格的值可通过“value”函数求得

案例

1、completeTuple([机动车辆保险],[北京])

解释

1、返回[机动车辆保险]与[北京]交叉部分

 

2.2         Tuple

原型

tuple ( member { , member } )

说明

根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。 默认情况下,包括来自所有维度(而非自变量中指定维度)的当前成员。 如果在计算上下文时未指定维度的当前成员,假定为该维度的默认成员。 此单元格的值可通过“value”函数求得

案例

1、Tuple([机动车辆保险],[北京])

解释

1、返回[机动车辆保险]与[北京]交叉部分

 

2.3         value

原型

value ( tuple )

说明

返回由数组确定的单元格的值。请注意,度量维度的默认成员是默认度量

案例

1、value(tuple([机动车辆保险],[营销],[保单数量]))

解释

1、返回[机动车辆保险]与[北京]交叉部分[保单数量]值

 

2.4         caption

原型

caption ( level | member | set_exp )

说明

返回指定自变量的标题值

案例

1、caption([每日一览N].[产品].[产品].[险类+])

解释

1、返回[每日一览N].[产品].[产品].[险类+]名称列表

 

2.5         substring

原型

substring ( string_exp , integer_exp1 [ , integer_exp2 ] )

说明

返回 string_exp 的子字符串。该子字符串从 integer_exp1 位置开始连续 integer_exp2 个字符或者到 string_exp 的末尾(如果未指定 integer_exp2)。 string_exp 中的第一个字符处在位置 1

案例

1、substring(caption([每日一览N].[产品].[产品].[险类+]),3,5)

解释

1、返回[每日一览N].[产品].[产品].[险类+]名称的第3位起,最大5个字

 

2.6         roleValue

原型

roleValue ( string [ , member | set_exp ] )

说明

返回与指定上下文中的某一角色(其名称由“string”指定)相关联的属性值。只在一些特定情况下,第二个自变量是可选的,这时它可由其他上下文派生得出。应用程序通过按角色而非按查询项目 ID 来访问属性,可以灵活地在不同的数据源和模型之间切换。(对于按维度建模的关系数据源,应由建模者分配角色。)为所有数据源类型的成员定义的内蕴角色包括:“_businessKey”、“_memberCaption”、“_memberDescription”、“_memberUniqueName

案例

1、roleValue('_businessKey',[每日一览N].[日期].[日期].[年])

解释

1、返回日期类似("2001-01-01","2001-12-31")

 

2.7         ordinal

原型

ordinal ( level )

说明

返回指定级别的序数值(表示与根级别的距离,从零算起)

案例

1、ordinal(level(CurrentMember([每日一览N].[产品].[产品])))

解释

1、返回0

 

 

3        案例分析:

3.1         维度成员组合(unionmembers

案例1:

查询表达式:union(members([ids_fspg_biz_ply_calc].[机构维].[机构维].[部门组]),members([ids_fspg_biz_ply_calc].[机构维].[机构维].[分公司]),all)

 

显示结果如下:

入账保费本期

已决赔款本期

估损金额本期

机构成员

220310530.5

108985584.8

528845589.7

南京本部

48389677.91

33200885.17

193426745

盐城中心支公司

60755345.77

32554842.83

142384001.5

淮安中心支公司

46081415.58

38516559.7

166707329.3

泰州中心支公司

161412453.6

85677317.32

342161360.8

徐州中心支公司

100655687.5

61145560.48

238695714.5

南通中心支公司

60831595.83

51106269.86

217132228.5

连云港中心支公司

54474389.38

31071380.93

136790267

扬州中心支公司

75524214.4

48535118.38

173261278.9

镇江中心支公司

9015433.8

14423796.63

52141826.04

宿迁中心支公司

837450744.2

505217316.1

2191546341

江苏分公司

 

 

3.2         维度成员排序组合(hierarchizeunionmembers

案例1:

查询表达式:hierarchize(union(members([ids_fspg_biz_ply_calc].[机构维].[机构维].[部门组]),members([ids_fspg_biz_ply_calc].[机构维].[机构维].[分公司]),all))

 

显示结果如下:

入账保费本期

已决赔款本期

估损金额本期

机构成员

837450744.2

505217316.1

2191546341

江苏分公司

220310530.5

108985584.8

528845589.7

南京本部

48389677.91

33200885.17

193426745

盐城中心支公司

60755345.77

32554842.83

142384001.5

淮安中心支公司

46081415.58

38516559.7

166707329.3

泰州中心支公司

161412453.6

85677317.32

342161360.8

徐州中心支公司

100655687.5

61145560.48

238695714.5

南通中心支公司

60831595.83

51106269.86

217132228.5

连云港中心支公司

54474389.38

31071380.93

136790267

扬州中心支公司

75524214.4

48535118.38

173261278.9

镇江中心支公司

9015433.8

14423796.63

52141826.04

宿迁中心支公司

 

 

3.3         维度类别组合(hierarchylevelslevel

 

通过下图了解类别与层级,A是“机构维”树,包含层级与成员,B是各层级与明细成员,互相独立层次,hierarchy()函数,对A和B都可以选择。选择A和成员名称,只显示根节点与当前成员集,

 

 

 

 

 

3.4         RS中基于CUBE数据源的同期、本年累计等MDX写法

所有的例子中:month参数指向月粒度、year参数指向年粒度。日期层次结构为:年、季度、月、日

 

1. 去年同期:即查询月为200905的话,该指标为200805该指标

total([金额] within set parallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?mon?))

 

 

2. 本年累计:即查询月为200905的话,该指标为200901-200905期间发生

total([金额] within set periodsToDate([日期].[日期层次结构].[年],[日期].[日期层次结构].[月]->?mon?))

 

 

3. 去年同期止累计:即查询月为200905的话,该指标为200801-200805期间发生

total([金额] within set periodsToDate([日期].[日期层次结构].[年],parallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?mon?)))

 

 

4. 有史以来累计发生:查询月为200805,则为从时间第一个节点截止200805期间发生

 

1)如果提示使用的是[日期].[日期层次结构].[月].[月 - Key]

   total([金额] within set

        filter(

             members([日期].[日期层次结构].[月]),

             [日期].[日期层次结构].[月].[月 - Key]<=?month?

              ))

 

2)如果提示使用的是[日期].[日期层次结构].[月]

    total([金额] within set

        lastperiods(1000,[日期].[日期层次结构].[月]->?month?))

 

 

5. 查询粒度为年,统计上半年、下半年

上半年余额(即时点类指标):

total([余额] within set subset(descendants([日期].[日期层次结构].[年]->?year?,[日期].[日期层次结构].[月]),5,1))

 

上半年发生额(即时段类指标):

total([金额] within set subset(descendants([日期].[日期层次结构].[年]->?year?,[日期].[日期层次结构].[月]),0,6))

 

这里subset()这个函数和substring()类似,只不过subset截取的是一个set(集合)中的某些成员而已,并且注意subset()第一个是0而不是1,这个和数组是类似的.

 

 

6、同比与环比

 

同比增长 (以日期为行维)

([销售金额]- value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额])))

/

value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额]))

 

环比增长   (以日期为行维)

([销售金额]-value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额])))

/

value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额]))