IBM Cognos BI 最佳实践: IBM Cognos 8 维度函数参考指南

本文档提供了有关 Report Studio for IBM Cognos 8 中的维度函数(dimensional function)的详细内容和示例。

developerWorks 中国网站编辑团队, 编辑, IBM

developerWorks 中国网站编辑团队。



2010 年 4 月 22 日

1 简介

1.1 目的

本文档提供了有关 Report Studio for IBM Cognos 8 中的维度函数(dimensional function )的详细内容和示例。

1.2 适用范围

本文档列出的技巧和产品行为适用于:

  • IBM Cognos 8 8.4.27.26-0 ,使用来自样例的 IBM Cognos Great Outdoor Sales ( 多维数据集 ) 。

2 背景资料

下图是著名户外品牌 PowerCube 公司的产品空间的示例结构,展示了 Camping Equipment Product Line 的产品成员。这个产品空间将作为许多后续示例的基础。

户外品牌 PowerCube 公司的产品空间的示例结构


3 函数定义

3.1 ancestor

语法:

ancestor ( member, level | integer )

描述:

返回指定成员的位于指定(指定名称)级别的祖先,或者返回位于该成员指定数量的级别之上的祖先。

注意:在存在多个祖先的情况下不能保证结果的一致性。

示例:

ancestor([TrailChef Water Bag], 1) 结果:Cooking Gear

ancestor([TrailChef Water Bag], 2) 结果:Camping Equipment

ancestor([TrailChef Water Bag],[g reat_outdoors_com pany] . [Products]. [Products]. [Product type]) 结果:Cooking Gear

3.2 ancestors

语法:

ancestors ( member, level | integer )

描述:

返回一个成员的位于指定级别的所有祖先,或者是与该成员具有指定距离的所有祖先。(大多数数据源支持一个特定级别只有一个祖先,但是有些数据源支持多个祖先。因此结果是一个成员集)

示例:

ancestors([TrailChef Water Bag], 1) 结果:Cooking Gear

ancestors([TrailChef Water Bag], 2) 结果:Camping Equipment

ancestors([TrailChef Water Bag],[g reat_outdoors_com pany] . [Products]. [Products]. [Product type]) 结果:Cooking Gear

3.3 bottomCount

语法:

bottomCount ( set_exp , index_exp , numeric_exp )

描述:

该函数根据 "numeric_expression" 对每个 "set_exp" 成员计算的值对集合排序,并返回最底部的 "index_exp" 成员。

示例:

根据使用 [2006] 交集(intersection)和默认度量 [Revenue] 的交叉表报表确定 numeric_exp。

bottomCount(set([Cam ping Equi pment],[Golf Equipment],[Mountaineering Equipment]),2,[2006])

bottomCount 示例

结果:

bottomCount 示例结果

基于一个列表报表,对 numeric_exp 使用了 [Revenue] 度量的直接引用。

bottomCount([great_outdoors_com pany] . [Products]. [Products]. [Produ ct line],2,[Revenue])

结果:

Outdoor Protection $3,171,114.92
Mountaineering Equipment $20,891,350.60

3.4 bottomPercent

语法:

bottomPercent ( set_exp , numeric_exp1 , numeric_exp2 )

描述:

该函数类似于 bottomSum ,但是阈值为总数的 "numeric_exp1" 个百分比。

numeric_exp1 的范围为从 0 到 100 。

示例:

基于一个交叉表报表

bottomPercent(set([Camping Equipment],[Golf Equipment],[Mountaineering Equipment]),40,[2006])

对于 Camping Equipment 集合,Golf Equipment 和 Mountaineering Equipment 在元组 2006 中返回其总百分比大于或等于 40% 的成员。

bottomPercent 示例

结果:

bottomPercent 示例结果

bottomPercent(set([Camping Equipment],[Golf Equipment],[Mountaineering Equipment]),20,tuple([2006],[great_outdoors_company] . [Measures]. [ Gross profit]))

结果:

bottomPercent 示例2结果

3.5 bottomSum

语法:

bottomSum ( set_exp , numeric_exp1 , numeric_exp2 )

描述:

该函数将对 "numeric_exp2" 排序(后者对相应的 "set_exp" 成员进行计算),并选择其累计总数至少为“numeric_exp1 ”的最底层的元素。

示例:

bottomSum 示例

基于一个交叉表报表

bottomSum(members([great_outdoors_company] . [Products]. [Products].[Product line]), 6000000, tuple([2006],[great_outdoors_company] . [Measures]. [Gross profit]))

结果:

bottomSum 示例结果

3.6 caption

语法:

caption ( level | member | set_exp )

描述:

返回指定元素的标题值。

标题是元素的字符串显示名,并且不需要匹配用于生成元素的业务键或惟一成员名的惟一标识符。标题不需要具有惟一性。月份的标题可能会返回月份名,而不会返回限定这一个值的年份信息。

示例:

caption([TrailChef Water Bag]) 结果:TrailChef Water Bag

caption([great_outdoors_company] . [Products]. [Products]. [Product line])

结果:

Camping Equipment 
Mountaineering Equipment Personal Accessories 
Outdoor Protection 
Golf Equipment

3.7 children

语法:

children ( member )

描述:

返回指定成员的子集合。

示例:

children([Camping Equipment])

结果:

Cooking Gear 
Tents 
Sleeping Bags 
Packs Lanterns

3.8 closingPeriod

语法:

closingPeriod ( level [, member ] )

描述:

返回位于某个指定级别的成员的后代中的最后一个兄弟节点。通常与时间维度结合使用。

示例:

closingPeriod([great_outdoors_company] . [Years]. [Years]. [Month]) 结果:2006/Dec

closingPeriod([great_outdoors_company] . [Years]. [Years]. [Year]) 结果:2006

closingPeriod([great_outdoors_company] .[Years] . [Years] .[Month],[20 06 Q 4]) 结果:2006/Dec

3.9 completeTuple

语法:

completeTuple ( member { , member } )

描述:

类似于 "tuple" ,根据指定的成员识别 cell 位置(交集),每个成员必须来自不同的维度。然而,completetuple 隐含了来自所有维度的默认成员(没有以其他方式指定),而不是包含当前的成员。这个 cell 的值可以被包含到 "value" 函数中。

示例:

下面的第一列使用表达式: completetuple([Mountaineering Equipment],[Fax])

第二列使用一个更精确的表达式:

completetuple([Mountaineering Equipment],[Fax],[Quantity sold],currentMember([g reat_outdoors_com pany] . [Years]. [Years]))

结果:

completeTuple 示例结果

completetuple 并没有像 tuple 函数那样默认选择 currentMember 。第一列的值对于每一年都是相同的,因为使用的是 Years 维度的默认成员 root member ,而不是当前成员。同样,第一列显示的是 Revenue 而不是 Quantity Sold ,因为 Revenue 度量是来自 Measures 维度的默认值。如果 completetuple 函数中没有定义 currentMeasure 的话,Completetuple 将在查询中使用默认度量而不是 currentMeasure 。

以上输出的第二列指定 completetuple 函数将使用 Years 维度的 currentMember 以及 Quanityt sold 度量。这与下面用于 Tuple 函数的示例相同,其中默认选择了 currentMember 和 currentMeasure 。

3.10 cousin

语法:

cousin ( member1 , member2 )

描述:

返回成员 2 的子成员,该子成员在其父成员下具有与成员 1 相同的相对位置。

示例:

cousin([Irons],[Camping Equipment]) 结果:Cooking Gear

cousin([Putters],[Camping Equipment]) 结果:Sleeping Bags

3.11 currentMember

语法:

currentMember ( hierarchy )

描述:

在一次迭代期间返回层次结构中的当前成员。如果在计算表达式的上下文中没有给出指定的层次结构,那么将假设一个默认成员。

示例:

currentMember([great_outdoors_com pany] . [Products]. [Products])

currentMember 示例

结果:

currentMember 示例结果

3.12 defaultMember

语法:

defaultMember ( hierarchy )

描述:

返回层次结构的默认成员。

示例:

defaultMember([great_outdoors_company] .[Products] . [Products]) 结果:Products

defaultMember([great_outdoors_company] . [Years]. [Years]) 结果:Years

defaultMember(hierarchy([great_outdoors_company] . [Measures]. [Quantity sold]))

结果:Revenue

defaultMember 示例结果1

结果:

defaultMember 示例结果2

3.13 descendants

语法:

descendants(set_expr,level|index[,{self|before|beforewithmember|after}])

描述:

返回一组成员的位于指定级别或与根具有指定距离的后代集,可以包含或排除位于其他级别的后代。将从集合中移除相同的成员。

示例:

注意:[great_outdoors_company]. [Products]. [Products]. [Products] 是 Products 层次结构的根成员。

descendants([Member], [Level]) 或 descendants([Member], [Level], self)

descendants([great_outdoors_com pany] . [Products]. [Products]. [Products],[great_outdoors_company] . [Products]. [Products]. [Product type])

结果:

Cooking Gear 
Sleeping Bags 
Packs 
Tents 
... 
First Aid 
Insect Repellents 
Sunscreen 
Binoculars 
Navigation 
Eyewear 
Knives 
Watches

descendants([Member], <distance>)

descendants([great_outdoors_company] . [Products]. [Products]. [Products], 1)

结果:

Camping Equipment
Golf Equipment 
Mountaineering Equipment 
Outdoor Protection 
Personal Accessories

descendants([Member], <distance>, before)

descendants([great_outdoors_company] . [Products]. [Products]. [Products], 3, before)

结果:

Camping Equipment 
Cooking Gear 
Sleeping Bags 
Packs 
Tents 
Lanterns 
Golf Equipment 
Irons 
Putters 
Woods 
Golf Accessories 
Mountaineering Equipment 
Climbing Accessories 
Tools 
Rope 
Safety 
Outdoor Protection 
First Aid 
Insect Repellents 
Sunscreen 
Personal Accessories 
Binoculars 
Navigation 
Eyewear 
Knives 
Watches

descendants([great_outdoors_company] . [Products]. [Products]. [Products], 2, self before)

结果:

Camping Equipment 
Cooking Gear 
Sleeping Bags 
Packs 
Tents 
Lanterns 
Golf Equipment 
Irons 
Putters 
Woods 
Golf Accessories 
Mountaineering Equipment 
Climbing Accessories 
Tools 
Rope 
Safety 
Outdoor Protection 
First Aid 
Insect Repellents 
Sunscreen 	
Personal Accessories 
Binoculars 
Navigation 
Eyewear 
Knives 
Watches

3.14 emptySet

语法:

emptySet ( hierarchy )

描述:

返回指定层次结构的空成员集合。这通常在开发中被作为占位符使用,或者结合使用动态报表设计(利用 SDK 或报表设计)。通过创建包含 emptyset 函数的数据項,可以构建一个复杂的表达式,稍后可以通过重新定义 emptyset 数据項来修改此表达式。

示例:

except([great_outdoors_company] . [Products]. [Products]. [Product line],emptyset([great_outdoors_company] . [Products]. [Products]))

结果:

Camping Equipment
Golf Equipment 
Mountaineering Equipment 
Outdoor Protection 
Personal Accessories

3.15 except

语法:

except ( set_exp 1 , set_exp2 [,ALL] )

描述:

返回 "set_exp1" 中未出现在 "set_exp2" 中的成员。只有在可选的关键字 ALL 被作为第三个参数提供时,才会保留相同的成员。

示例:

except(set([Camping Equipment],[Mountaineering Equipment]), set([Camping Equipment],[Golf Equipment]))

结果:Mountaineering Equipment

3.16 filter

语法:

filter ( set_exp , boolean_exp )

描述:

返回根据 boolean 条件对指定集合执行过滤后的结果集。当且仅当“boolean_exp ”

的对应值为 true 时才会在结果中包含每一个成员。

示例:

源数据:

filter 源数据

表达式 <#High Margin Product Lines#> : filter([Product line], [Gross margin] > .30)

filter 示例

结果:

filter 示例结果

源数据:

filter 源数据2

表达式:

filter([Product line], tuple([Gross margin], [2006]) > .30) 结果:

filter 示例2结果

3.17 firstChild

语法:

firstChild ( member)

描述:

返回某个成员的第一个子成员。

示例:

firstChild([By Product Lines]) 结果:Camping Equipment

firstChild([Camping Equipment]) 结果:Cooking Gear

3.18 firstSibling

语法:

firstSibling ( member )

描述:

返回某成员的父成员的第一个子成员。

示例:

firstSibling ([Outdoor Protection]) 结果:Camping Equipment

firstSibling ([Camping Equipment]) 结果:Camping Equipment

3.19 generate

语法:

generate ( set_exp1 , set_exp2 [ , ALL ] )

描述:

该函数将针对 "set_exp1" 的每个成员计算 "set_exp2" ,并通过使用合并(union )连接结果集。如果指定了 ALL ,那么将在结果中保留相同的值。

示例:

以下示例按照收入计算了每个产品线排在前两位的产品。

generate([Product line], topCount( descendants( currentMember( [great_outdoors_company]. [Products]. [Products]), [great_outdoors_company] .[Products] . [Products]. [Product name] ), 2, [Revenue]))

结果:

generate 示例结果

3.20 head

语法:

head ( set_exp [ , index_exp ] )

描述:

返回 "set_exp" 的第一个 "index_exp" 元素。默认 "index_exp" 为 1 。

示例:

head(members([great_outdoors_company] . [Products]. [Products]. [Product line]))

结果:Camping Equipment

head(members([great_outdoors_company] . [Products]. [Products]. [Product line]),2)

结果:Camping Equipment

Mountaineering Equipment

3.21 hierarchize

语法:

hierarchize ( set_exp )

描述:

此函数对层次结构中的某个集合的成员进行排序。同一级别的成员将根据其自然顺序排序,当没有指定其他排序条件时,这将作为维度成员的默认排序法。

示例:

hierarchize 示例

hierarchize(set([Golf Equipment],[Mountaineering Equipment],[Camping Equipment]))

结果:

hierarchize 示例结果

3.22 hierarchy

语法:

hierarchy ( level | member | set_exp )

描述:

返回包含指定级别、指定成员或成员集合的层次结构。

示例:

hierarchy([Cooking Gear])

结果:(包含 Cooking Gear 的层次结构中的每一个成员)

Products 
Camping Equipment Cooking Gear 
TrailChef Water Bag 
TrailChef Canteen 
TrailChef Deluxe Cook Set 	
TrailChef Double Flame 
TrailChef Kettle 
TrailChef Kitchen Kit 
TrailChef Cup 
TrailChef Cook Set 
TrailChef Single Flame 
TrailChef Utensils 
Sleeping Bags 
Hibernator Extreme 
... 
Mountain Man Analog 
Mountain Man Digital 
Mountain Man Combination 
Mountain Man Extreme 
Mountain Man Deluxe

hierarchy([great_outdoors_company] . [Products]. [Products]. [Product line])

结果:(包含该产品线的层次结构中的每一个成员)

Products 
Camping Equipment Cooking Gear 
TrailChef Water Bag 
TrailChef Canteen 
TrailChef Deluxe Cook Set 
TrailChef Double Flame 
TrailChef Kettle 
TrailChef Kitchen Kit 
TrailChef Cup 
TrailChef Cook Set 
TrailChef Single Flame 
TrailChef Utensils 
Sleeping Bags 
Hibernator Extreme 
... 
Mountain Man Analog 
Mountain Man Digital 
Mountain Man Combination 
Mountain Man Extreme 
Mountain Man Deluxe

3.23 item

语法:

item ( set_exp , index )

描述:

返回集合内来自指定位置的成员。该集合的索引从 0 开始

示例:

item(children([Camping Equipment]),2) 结果:Sleeping Bags

3.24 intersect

语法:

intersect ( set_exp1 , set_exp2 [ , ALL ] )

描述:

返回两个输入集合的交集。只有可选 关键字 ALL 被作为第三个参数提供时,才会在结果中保留相同的内容。

示例:

intersect(set([Camping Equipment],[Mountaineering Equipment]), set([Camping Equipment],[Outdoor Protection],),ALL)

结果:Camping Equipment

3.25 lag

语法:

lag ( member , index_exp )

描述:

返回位于指定成员之间的指定位置的兄弟成员。

示例:

lag([Tents], 1) 结果:Cooking Gear

lag([Tents],-2) 结果:Packs

3.26 lastChild

语法:

lastChild ( member )

描述:

返回指定成员的最后一个子成员。

示例:

lastChild(Cooking Gear) 结果:TrailChief Utensils

lastChild([By Product Line]) 结果:Golf Equipment

3.27 lastPeriods

语法:

lastPeriods ( integer_exp , member )

描述:

返回以指定成员结尾的同一级别的成员集合。返回的成员数为 "integer_exp" 的绝对值。如果“integer_exp ”为负,那么将返回位于指定成员之后(包含指定成员)的成员。通常与时间维度结合使用。

示例:

lastPeriods(2,[2006 Q 4])

结果:2006 Q 3
2006 Q 4

lastPeriods(-3,[2006 Q 4])

结果:2006 Q 2
2006 Q 3
2006 Q 4

3.28 lastSibling

语法:

lastSibling ( member )

描述:

返回指定成员的父成员的最后一个子成员。

示例:

lastSibling ([Camping Equipment]) 结果:Golf Equipment

3.29 lead

语法:

lead ( member , index_exp )

描述:

返回位于指定成员之后的指定位置的兄弟成员。

示例:

lead ([Outdoor Protection], 1) 结果:Golf Equipment

lead ([Outdoor Protection],-2) 结果:Mountaineering Equipment

3.30 level

语法:

level ( member )

描述:

返回某个成员所在的级别。

示例:

level ([Golf Equipment])

结果:

Camping Equipment 
Mountaineering Equipment 
Personal Accessories 
Outdoor Protection 
Golf Equipment

level ([Outdoor Protection])

结果:

Camping Equipment 
Mountaineering Equipment 
Personal Accessories 
Outdoor Protection 
Golf Equipment

3.31 levels

语法:

levels ( hierarchy , index )

描述:

返回层次结构中其与根的距离由 "index" 指定的级别的成员。

示例:

levels([g reat_outdoors_company] . [Products]. [Products],2)

结果:

Cooking Gear 
Sleeping Bags 
Packs Tents 
... 
Irons Putters 
Woods 
Golf Accessories

levels([great_outdoors_company] . [Products]. [Products], 1)

结果:

Camping Equipment 
Mountaineering Equipment 
Personal Accessories 
Outdoor Protection 
Golf Equipment

3.32 linkMember

语法:

linkMember ( member , level | hierarchy )

描述:

返回(同一维度的不同层次结构的)指定级别或层次结构中的相应成员。对于基于级别的层次结构,必须将一个级别指定为第二个参数,而对于父 - 子形式的层次结构,必须指定一个层次结构。当第二个参数没有解析为第一个参数的成员所属的维度层次结构时,将抛出一个异常。注意不支持对第一个参数使用计算成员。

示例:

linkMember([great_outdoor_sales_en] . [Years]. [Current Month]. [Month]- > :[PC].[@MEMBER].[20070701- 2007073 1],[great_outdoor_sales_en] . [Years]. [Years]. [Month])

结果:[great_outdoor_sales_en].[Years].[Years].[Month]- >:[PC].[@MEMBER].[20070701-20070731]

3.33 member

语法:

member ( value_exp [ , string1 [ , string2 [ , hierarchy ] ] ] ) 
Amember + b Member , unique id, caption, hierarchy

描述:

根据指定层次架构中的指定表达式定义一个成员。"string1" 用于识别由该函数创建的成员,它必须在查询中惟一,并且必须不同于同一个层次结构中的任何其他成员。

"string2" 用作这个成员的标题;如果没有给出的话,标题为空。如果层次结构被忽略,那么将假设一个度量维度。注意:被作为分组项(其兄弟项为其他计算或成员集)的所有计算都应当通过此函数显式分配给一个层次结构,否则结果将不可预测。惟一的例外情况就是当计算仅涉及与兄弟项相同的层次结构的成员时。在这种情况下,将假设计算属于该层次结构。

示例:

member(total([g reat_outdoors_com pany] . [Measures]. [Quantity sold] within set [2005]),'Quantity2005','Quantity sold 2005')

member 示例

结果:

member 示例结果

或者聚合以字母 B 开头的所有产品

member(total(currentMeasure within set filter([great_outdoors_company] . [Products]. [Products]. [Product name],caption([great_outdoors_company] . [Products]. [Products]. [Product name]) starts with 'B')),'BProducts','B Products',[great_outdoors_company] . [Products]. [Products])

结果:

member 示例2结果

3.34 members

语法:

members ( hierarchy | level )

描述:

返回位于某个层次结构或级别的成员集。对于层次结构,不能保证结果中的成员的顺序;如果需要一个可预测的顺序,必须使用一个显式的排序函数(比如 hierarchize )。

示例:

members([great_outdoors_company] . [Years]. [Years])

结果:

Years 
2004 
2004 Q 1 
2004/Jan 
2004/Feb 
2004/Mar 
2004 Q 2 
2004/Apr 
... 
2006 Q 3 
2006/Jul 
2006/Aug 
2006/Sep 
2006 Q 4 
2006/Oct 
2006/Nov 
2006/Dec

mem bers([g reat_outdoors_com pany] . [Products]. [Products]. [Product line])

结果:

Camping Equipment 
Mountaineering Equipment 
Personal Accessories 
Outdoor Protection 
Golf Equipment

3.35 nestedSet

语法:

nestedSet ( set_expr1 , set_expr2 )

描述:

返回在 set_expr1 的当前成员的上下文中计算的 set_expr2 的成
员集。

示例:

下面的示例计算了每个产品线的排名前两位的产品的收益。

nestedSet(members([Product line]), topCount( descendants( currentMember( [great_outdoors_company]. [Products]. [Products]), [great_outdoors_company] .[Products] . [Products]. [Product name] ), 2, [Revenue]))

结果:

nestedSet 示例结果

3.36 nextMember

语法:

nextMember ( member )

描述:

返回指定成员所在的级别的下一个成员。

示例:

nextMember([Outdoor Protection]) 结果:Golf Equipment

3.37 openingPeriod

语法:

openingPeriod ( level [ , member ] )

描述:

返回某个成员的位于指定级别的后代的第一个兄弟成员。通常与时间维度结合使用。

示例:

openingPeriod([great_outdoors_company] . [Years]. [Years]. [Month]) 结果:2004/Jan

openingPeriod([great_outdoors_company] . [Years]. [Years]. [Year]) 结果:2004

openingPeriod([great_outdoors_company] . [Years]. [Years]. [Month],[2 006 Q 4])

结果:2006/Oct

3.38 order

语法:

order ( set_exp , value_exp [ , ASC | DESC | BASC | BDESC ] )

描述:

安排指定集合中的成员,依据是对集合中的每个值计算 "value_exp" 得到的值集合,该值集合通过第三个参数修改。

排序有两种不同变体:层次结构式(ASC 或 DESC )和非层次结构式(BASC 或 BDESC ,其中 B 表示 "break hierarchy" )。层次结构式排序首先根据成员在层次结构中的位置对它们进行安排。然后根据 "value_exp" 对每个成员的子成员排序。非层次结构式排序在集合中对成员进行排序,不考虑层次结构。如果没有给出显式的规定,将使用 ASC 作为默认排序方式。

示例:

order(members([Great Outdoors Company]. [Product]. [Product]. [Product type]),[Quantity sold], BASC)

以及

order(members([Great Outdoors Company]. [Product]. [Product]. [Product type]),[Quantity sold], ASC)

结果:

order 示例结果

3.39 ordinal

语法:

ordinal ( level )

描述:

返回指定级别的从 0 开始的序号值(与根级别的距离)。

示例:

ordinal([great_outdoors_company] . [Products]. [Products] .[Product line])

结果:1

ordinal([g reat_outdoors_com pany] . [Products]. [Products]. [Product type])

结果:2

3.40 parallelPeriod

语法:

parallelPeriod ( level , int_exp , member )

描述:

返回位于与指定成员相同相对位置的来自不同时间段的成员。该函数类似于 "Cousin" 函数,但是与时间序列的关系更紧密。它将获得位于 "level" 的 "member" 的祖先(称为 "ancestor" );然后获取 "ancestor" 的偏移量为 "int exp" 的兄弟节点,并返回该兄弟节点的位于与指定成员在 "ancestor" 下的相同相对位置的后代。

示例:

parallelPeriod([great_outdoors_company] . [Years]. [Years]. [Quarter],- 1,[2006/Aug] )

结果:2006/Nov

parallelPeriod([great_outdoors_company] . [Years]. [Years]. [Quarter],1, [2006/Aug] )

结果:2006/May

parallelPeriod([great_outdoors_company] . [Years]. [Years]. [Year],2,[20 06/Aug] )

结果:2004/Aug

3.41 parent

语法:

parent ( member )

描述:

返回表示指定成员的父成员的成员。

示例:

parent([Cooking Gear]) 结果:Camping Equipment

3.42 periodsToDate


语法:

periodsToDate ( level , member )

描述:

返回位于与给定成员相同级别的兄弟成员集,即受到指定级别的约束。

它将定位位于 "level" 的 "member" 的祖先,并返回该祖先的位于与 "member" 相同级别的后代,直到并包括 "member" 。通常与时间维度结合使用。

示例:

periodsToDate([great_outdoors_company] . [Years]. [Years]. [Year], [2004/Mar] )

结果:返回 [2004/Jan] 、[2004/Feb] 、[2004/Mar] 的值

3.43 prevMember


语法:

prevMember ( member )

描述:

返回在同一级别中紧挨着指定成员的前一个成员。

示例:

prevMember ([Outdoor Protection]) 结果:Personal Accessories

prevMember ([2005]) 结果:2004

3.44 roleValue

语法:

roleValue ( string [ , member | set_exp ] )

描述:

返回与角色有关的属性的值,该角色的名称由 "string" 在指定的上下文内指定。第二个参数只有在一些有限的环境中是可选的,在这些环境下可以从其他上下文中获得该参数。通过根据角色(而不是查询项 ID )访问属性,可以在不同的数据源和模型之间迁移应用程序。(对于对维度建模的关系数据源,角色分配是由建模者执行的)。

为所有数据源类型的成员定义的内在角色包括:_businessKey 、_memberCaption 、_memberDescription 、_memberUniqueName 。可以在 Framework Manager 中为层次结构的每一个级别定义额外的角色。例如,一个 Product type 级别可以有一个名为“Type Shipping Container ”的属性列,而 Product 级别可以有一个“Product Shipping Container ”属性。每一个这些属性都可以在 Framework Manager 中分配一个名为“Container ”的定制角色。通过使用 roleValue 函数,就可以独立于实际的列名来引用属性。

示例:

roleValue('_busi nessKey',[great_outdoors_com pany] . [Years]. [Years]. [ Year])

结果:

("2004-01-0 1","2004- 12-31")
("2005-01-0 1","2005- 12-31") 
("2006-01-0 1","2006- 12-31")

roleValue('_mem berUniqueName',[g reat_outdoors_com pany] . [Years]. [Years] .[Year])

结果:

[great_outdoors_company]. [Years]. [Years]. [Year] - 
> :[PC].[Years (Root)].[20040101-20041231] 

[great_outdoors_company]. [Years]. [Years]. [Year] - 
> :[PC].[Years (Root)].[20050101-20051231] 

[great_outdoors_company]. [Years]. [Years]. [Year] - 
> :[PC].[Years (Root)].[20060101-20061231]

3.45 rootMemeber

语法:

rootMember ( hierarchy )

描述:

返回单一根层次结构中的根成员。

示例:

rootMem ber([great_outdoors_company] . [Years]. [Years])

结果:[great_outdoor_sales_en]. [Years]. [Years]. [Years]- > :[PC].[@MEMBER].[Years]

3.46 rootMemebers

语法:

rootMembers ( hierarchy )

描述:

返回一个层次架构的根成员。

示例:

rootMem bers([great_outdoor_sales_en] . [Currency]. [Currency])

结果:

[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[USA] 
[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[CAN] 
[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[GBR] 
[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[SWE] 
[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[EUR] 
[great_outdoor_sales_en]. [Currency]. [Currency]- > :[PC].[@MEMBER].[JPN]

3.47 set

语法:

set ( member { , member } )

描述:

返回属于同一层次架构的成员的列表。

示例:

set([Golf Equipment], [Irons], [TrailChef Cup]) 结果:Golf Equipment

Irons TrailChef Cup

3.48 siblings

语法:

siblings ( member )

描述:

返回指定成员的父成员的子成员。

示例:

siblings([Golf Equipment])

结果:

Camping Equipment
Golf Equipment 
Mountaineering Equipment 
Outdoor Protection 
Personal Accessories

3.49 subset

语法:

subset ( set_exp, index_exp1 [ , index_exp2 ] )

描述:

返回一个指定集合的成员的子集,这个指定集合以 "index_exp1" 开头。如果计数 "index_exp2" 被指定,将返回指定的成员(如果有的话)。否则,将返回所有其余的成员。

示例:

subset(members([great_outdoors_company] . [Products]. [Products]. [Product line]), 2)

结果:

Mountaineering Equipment
Outdoor Protection 
Personal Accessories

subset(members([great_outdoors_company] . [Products]. [Products]. [Product line]), 2, 2)

结果:Mountaineering Equipment

Outdoor Protection

3.50 tail

语法:

tail ( set_exp [ , index_exp ] )

描述:

返回 "set exp" 的最后一个 "index_exp" 元素。"index_exp" 的默认值为 1 。

示例:

tail(members([great_outdoors_company] . [Products]. [Products]. [Product line]))

结果:Personal Accessories

tail(members([great_outdoors_company] . [Products]. [Products]. [Product line]),2)

结果:Outdoor Protection

Personal Accessories

3.51 topCount

语法:

topCount ( set_exp , index_exp , numeric_exp )

描述:

该函数根据对 "set_exp" 的每个成员计算得出的 "numeric_exp" 值对集合排序,并返回前 "index_exp" 个成员。

示例:

根据使用交集 [2006] 和默认度量 [Revenue] 的交叉表,确定 numeric_exp 。

topCount(set([Camping Equipment],[Golf Equipment],[Mountaineering Equipment]),2,[2006])

topCount 示例

结果:

topCount 示例结果

基于一个列表报表,对 numeric_exp 使用了 [Revenue] 度量的直接引用。

topCou nt([great_outdoors_company] . [Products]. [Products]. [Product line],2,[Revenue])

结果:Camping Equipment $89,713,990.92

Personal Accessories $31,894,465.86

3.52 topPercent

语法:

topPercent ( set_exp , numeric_exp1, numeric_exp2 )

描述:

该函数类似于 topSum ,但是阈值占总数的 "numeric_exp1" 个百分比。该函数的工作原理如下:对于给定的集合,寻找合计百分比大于或等于某个值(基于一个元组)的成员。

numeric_exp1 的范围为从 0 到 100 。

示例:

topPercent(set([Camping Equipment],[Golf Equipment],[Mountaineering Equipment]),40,[2006])

对于 Camping Equipment 、Golf Equipment 和 Mountaineering Equipment 集合,将为元组 2006 返回总百分比大于或等于 40% 的成员。

topPercent 示例topPercent 示例结果1

topPercent(set([Camping Equipment],[Golf Equipment],[Mountaineering Equipment]),70,tuple([2006],[great_outdoors_company] . [Measures]. [ Gross profit]))

topPercent 示例结果2

3.53 topSum

语法:

topSum ( set_exp , numeric_exp1 , numeric_exp2 )

描述:

该函数将对 "numeric_exp2" 排序(后者对相应的 "set_exp" 成员进行计算),并选择其累计总数至少为 “numeric_exp1 ”的顶层的元素。

示例:

topSum 示例

基于一个交叉表报表

topSum(child ren([Products]), 16000000,tuple([2006],[great_outdoors_ company].[Measures].[Gross profit]))

结果:

topSum 示例结果

3.54 tuple

语法:

tuple ( member { , member } )

描述:

根据指定的成员(每个成员都必须来自不同的维度)识别一个 cell 位置(交集)。隐含了来自所有维度的当前成员(没有以其他方式通过参数指定)。未在计算上下文中指定的任何维度的当前成员都被假设为该维度的默认成员。这个 cell 的值可以从 "value" 函数获得。

示例:

tuple([Mountaineering Equipment], [Fax])

tuple 示例结果

3.55 union

语法:

union ( set_exp1 , set_exp2 [ , ALL ] )

描述:

该函数返回 "set_exp1" 和 "set_exp2" 这两个集合的合集。只有可选的关键字 ALL 被作为第三个参数提供时,才能在结果集中保留相同的内容。

示例:

union(set([Camping Equipment], [Golf Equipment]), set([Golf Equipment], [Mountaineering Equipment]))

结果:

union 示例结果

union(set([Camping Equipment], [Golf Equipment]), set([Golf Equipment], [Mountaineering Equipment]), all)

结果:

union 示例2结果

3.56 unique

语法:

unique ( set_expr )

描述:

从指定的集合表达式中移除所有相同的内容。余下的成员仍然保持最初的顺序。

示例:

unique(set([Camping Equipment], [Golf Equipment],[Golf Equipment], [Mountaineering Equipment]))

结果:

unique 示例结果

3.57 value

语法:

value ( tuple )

描述:

返回由某个元组识别的 cell 的值。注意 Measures 维度的默认成员为 Default Measure 。

在许多情况下将会返回一个隐式的值,并且 value 函数可能变得不必要。在下面的例子中,可以移除 value 函数并实现相同的结果。

示例:

value(tuple([great_outdoors_com pa ny]. [Years]. [Years]. [Year] - > :[PC].[Years (Root)].[20040101-2004123 1],[great_outdoors_company] . [Measures]. [Revenue])) 结果:$34,750,563.50

value(tuple([2004], [Camping Equipment] , [Revenue]) ) 结果:$20,471,328.88


4 附录 A – 函数分组

4.1 Date

closingPeriod
lastPeriods
openingPeriod
parallelPeriod
periodsToDate

4.2 Family

ancestor
ancestors
children
cousin
descendants
firstChild
firstSibling
lastChild
lastSibling
parent
siblings

4.3 Hierarchy

hierarchy
level
levels
rootMember
rootMembers

4.4 Member

currentMember
defaultMember
lag
lead
linkMember
member
nextMember
prevMember

4.5 Set

emptySet
except
filter
generate
head
hierarchize
intersect
item
members
nested
Set
order
set
subset
tail
union
unique

4.6 TopandBottom

bottomCount
bottomPercent
bottomSum
topCount
topPercent
topSum

4.7 Value

caption
completeTuple
ordinal
roleValue
tuple

下载

描述名字大小
1OLAP Function Samples38k

注意:

  1. 示例代码!

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=484862
ArticleTitle=IBM Cognos BI 最佳实践: IBM Cognos 8 维度函数参考指南
publish-date=04222010