cgons OLAP函数使用总结.docx
《cgons OLAP函数使用总结.docx》由会员分享,可在线阅读,更多相关《cgons OLAP函数使用总结.docx(19页珍藏版)》请在冰点文库上搜索。
cgonsOLAP函数使用总结
下函数说明均来自CognosReportNet说明,函数例子由本人总结编写
firstFromSet(set_exp,numeric_exp_max,numeric_exp_overflow)
返回在集中找到的前几个(不超过numeric_exp_max+numeric_exp_overflow)成员。
如果超过numeric_exp_max+numeric_exp_overflow,则只返回成员的最大数目。
remainderSet(member_exp, set_exp,numeric_exp)
当set_expset的大小大于numeric_exp时,成员表达式将包括在返回的集中。
hierarchy(level|member|set_exp)
返回包含指定级别、成员或成员集的层级。
level(member)
返回成员的级别。
levels(hierarchy,index)
返回层级中与根级别相距某一距离(由“index”指定)的级别。
rootMembers(hierarchy)
返回层级的根成员。
currentMember(hierarchy)
返回迭代过程中某个层级的当前成员。
如果指定层级不在所计算的表达式的上下文中,则假定为其默认成员。
例子:
环比增长,相对于同年上月的增长:
([销售金额]-value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额])))
/value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额]))
defaultMember(hierarchy)
返回层级的默认成员。
lag(member,index_exp)
返回排在指定成员之前特定位数的同胞成员。
例子:
lag([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091203],2)
结果:
20091201
lead(member,index_exp)
返回排在指定成员之后特定位数的同胞成员。
例子:
lead([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091201],2)
结果:
20091203
members(hierarchy|level)
返回层级或级别中的成员集。
如果返回层级中的成员,则结果中无法保证成员的顺序;要按某一个顺序列出成员,必须使用明确排序的函数(如hierarchize)。
member(value_exp[,string1[,string2[,hierarchy]]])
根据指定层级中的指定表达式定义成员。
“string1”用于识别由此函数创建的成员,它必须在查询中是唯一的,并且不同于同一层级中的任何其它成员。
“string2”用作成员标题;如果不指定,则标题为空。
如果未指定层级,则假定为度量维度。
注释:
如果所有计算均用作分组项,并且这些分组项的同胞项是其它计算或成员集,则所有计算均应通过此函数明确分配给某一层级,否则会得到无法预计的结果。
唯一的例外是,如果计算仅涉及同一层级的同胞成员,则不必分配。
这种情况下,假定计算属于此层级。
nextMember(member)
返回包含指定成员的级别中的下一个成员。
prevMember(member)
返回同一级别中直接排在指定成员前面的成员。
ancestor(member,level|integer)
返回指定(命名)级别上指定成员的祖项,或返回以下级别上指定成员的祖项:
指定成员上面指定数量的级别。
注:
当存在多个此类祖项时,结果可能不一致。
例子:
ancestor([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210],[AcrmSale].[日期].[日期].[YEAR])
结果:
2009年
ancestors(member,level|index)
返回某一成员在指定级别或高于该成员的级别中的所有祖项。
(在指定级别上,大多数数据源只支持一个祖项,而某些数据源则支持多个祖项。
因此结果是成员集。
)
例子:
ancestors([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210],[AcrmSale].[日期].[日期].[MONTH])
结果:
12月
parent(member)
返回指定成员的父项成员。
例子:
parent([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
12月
例子:
parent(parent([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210]))
结果:
2009年
cousin(member1,member2)
返回member2的子项,该子项在member2下面的相对位置与member1在其父项下面的相对位置相同。
位置是指:
序号,返回序号相同的成员
例子:
cousin([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091022],[AcrmSale].[日期].[日期].[MONTH]->:
[PC].[@MEMBER].[200911])
descendants(member|set_expr,level|distance[,{self|before|beforewithmember|after}])
返回指定级别(限定名称)或与根级别相距某一距离(整数0..n)的级别上某成员或成员集的子项集。
可以指定多个选项(用空格隔开)以确定要返回的成员。
返回与member成员相距level级别上的成员
例子1:
查询粒度为年,统计上半年、下半年
上半年余额,六月的余额即为上半年余额:
total([余额]withinsetsubset(descendants([日期].[日期层次结构],[年]->?
year?
[日期].[日期层次结构].[月]),5,1))
说明:
descendants函数作用为:
得到查询的年份成员在[日期].[日期层次结构].[月]层次上的所有成员;取得的这些月份成员索引号从0开始;
subset函数,从第5个[月]成员开始取,取1个成员,即取得了成员:
6月;
total函数,再汇总6月的余额,相当于没有汇总;
例子2:
上半年发生额,前六个月的发生额相加为上半年发生额:
total([金额]withinsetsubset(descendants([日期].[日期层次结构].[年]->?
year?
[日期].[日期层次结构].[月]),0,6))
说明:
descendants函数作用为:
得到查询的年份成员在[日期].[日期层次结构].[月]层次上的所有成员;取得的这些月份成员索引号从0开始;
subset函数,从第0个[月]成员开始取,取6个成员,即取得了成员:
1月至6月;
total函数,再汇总1月到6月的发生额;
firstSibling(member)
返回成员父项的第一个子项。
返回member的大哥;
例子:
firstSibling([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
20091201
lastChild(member)
返回指定成员的最后一个子项。
返回member最小的儿子
例子:
lastChild([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[200912])
结果:
20091231
siblings(member)
返回指定成员的父项的子项。
返回member的所有兄弟成员
例子:
siblings([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
20091201到20091231
parallelPeriod(level[,int_exp[,member]])
返回先前时段中与指定成员具有相同相对位置的成员。
此函数与“Cousin”函数类似,但与时序的关系更为密切。
该函数先得出处于“level”的“member”的祖项(称为“祖项”);然后得出与“祖项”相距“int_exp”个位置的“祖项”同胞,并返回该同胞的子项中“member”的平行时段。
如果未指定,“int_exp”默认值为1,“member”的默认值为当前成员。
返回相对于level成员的祖项偏移量为int_exp的祖项成员的与level成员处于相同位置的成员
int_exp为正数,则要求的是该成员之前的层次,如:
parallelPeriod([月],1),如果[月]成员为200905,则parallelPeriod([月],1)值为:
200805
int_exp为负数,则要求的是该成员之后的层次,如:
parallelPeriod([月],-1),如果[月]成员为200905,则parallelPeriod([月],-1)值为:
201005
例子1:
去年同期:
即查询月为200905的话,该指标为200805该指标
total([金额]withinsetparallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?
mon?
))
例子2:
同比增长:
相对于去年的增长
([销售金额]-value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额])))
/value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额]))
说明:
parallelPeriod([ARPD-Sale].[日期].[日期].[年])为取得去年相对于[年]成员,level为1的成员:
[月]成员;
tuple()为取得每个成员:
[月]与[销售金额]的交叉单元格
value()为取得交叉单元格的值
periodsToDate(level,member)
返回与指定成员处于同一级别的同胞成员集,并受指定级别限制。
它先查找处于“level”级别的“member”成员的祖项,然后返回此祖项中与“member”成员处于同一级别的子项(直到包括“member”成员)。
通常与时间维度配合使用。
返回member成员的level祖项的子项直至包括到member
例子1:
本年累计:
即查询月为200905的话,该指标为200901-200905期间发生
total([金额]withinsetperiodsToDate([日期].[日期层次结构].[年],[日期].[日期层次结构].[月]->?
mon?
))
例子2:
去年同期止累计:
即查询月为200905的话,该指标为200801-200805期间发生
total([金额]withinsetperiodsToDate([日期].[日期层次结构].[年],parallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?
mon?
)))
例子3:
except(periodsToDate([AcrmSale].[日期].[日期].[YEAR],[AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210]),periodsToDate([AcrmSale].[日期].[日期].[YEAR],prevMember([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091201])))
下函数说明均来自CognosReportNet说明,函数例子由本人总结编写
firstFromSet(set_exp,numeric_exp_max,numeric_exp_overflow)
返回在集中找到的前几个(不超过numeric_exp_max+numeric_exp_overflow)成员。
如果超过numeric_exp_max+numeric_exp_overflow,则只返回成员的最大数目。
remainderSet(member_exp, set_exp,numeric_exp)
当set_expset的大小大于numeric_exp时,成员表达式将包括在返回的集中。
hierarchy(level|member|set_exp)
返回包含指定级别、成员或成员集的层级。
level(member)
返回成员的级别。
levels(hierarchy,index)
返回层级中与根级别相距某一距离(由“index”指定)的级别。
rootMembers(hierarchy)
返回层级的根成员。
currentMember(hierarchy)
返回迭代过程中某个层级的当前成员。
如果指定层级不在所计算的表达式的上下文中,则假定为其默认成员。
例子:
环比增长,相对于同年上月的增长:
([销售金额]-value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额])))/value(tuple(prevMember(currentMember([ARPD-Sale].[日期].[日期])),[销售金额]))
defaultMember(hierarchy)
返回层级的默认成员。
lag(member,index_exp)
返回排在指定成员之前特定位数的同胞成员。
例子:
lag([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091203],2)
结果:
20091201
lead(member,index_exp)
返回排在指定成员之后特定位数的同胞成员。
例子:
lead([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091201],2)
结果:
20091203
members(hierarchy|level)
返回层级或级别中的成员集。
如果返回层级中的成员,则结果中无法保证成员的顺序;要按某一个顺序列出成员,必须使用明确排序的函数(如hierarchize)。
member(value_exp[,string1[,string2[,hierarchy]]])
根据指定层级中的指定表达式定义成员。
“string1”用于识别由此函数创建的成员,它必须在查询中是唯一的,并且不同于同一层级中的任何其它成员。
“string2”用作成员标题;如果不指定,则标题为空。
如果未指定层级,则假定为度量维度。
注释:
如果所有计算均用作分组项,并且这些分组项的同胞项是其它计算或成员集,则所有计算均应通过此函数明确分配给某一层级,否则会得到无法预计的结果。
唯一的例外是,如果计算仅涉及同一层级的同胞成员,则不必分配。
这种情况下,假定计算属于此层级。
nextMember(member)
返回包含指定成员的级别中的下一个成员。
prevMember(member)
返回同一级别中直接排在指定成员前面的成员。
ancestor(member,level|integer)
返回指定(命名)级别上指定成员的祖项,或返回以下级别上指定成员的祖项:
指定成员上面指定数量的级别。
注:
当存在多个此类祖项时,结果可能不一致。
例子:
ancestor([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210],[AcrmSale].[日期].[日期].[YEAR])
结果:
2009年
ancestors(member,level|index)
返回某一成员在指定级别或高于该成员的级别中的所有祖项。
(在指定级别上,大多数数据源只支持一个祖项,而某些数据源则支持多个祖项。
因此结果是成员集。
)
例子:
ancestors([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210],[AcrmSale].[日期].[日期].[MONTH])
结果:
12月
parent(member)
返回指定成员的父项成员。
例子:
parent([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
12月
例子:
parent(parent([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210]))
结果:
2009年
cousin(member1,member2)
返回member2的子项,该子项在member2下面的相对位置与member1在其父项下面的相对位置相同。
位置是指:
序号,返回序号相同的成员
例子:
cousin([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091022],[AcrmSale].[日期].[日期].[MONTH]->:
[PC].[@MEMBER].[200911])
descendants(member|set_expr,level|distance[,{self|before|beforewithmember|after}])
返回指定级别(限定名称)或与根级别相距某一距离(整数0..n)的级别上某成员或成员集的子项集。
可以指定多个选项(用空格隔开)以确定要返回的成员。
返回与member成员相距level级别上的成员
例子1:
查询粒度为年,统计上半年、下半年
上半年余额,六月的余额即为上半年余额:
total([余额]withinsetsubset(descendants([日期].[日期层次结构],[年]->?
year?
[日期].[日期层次结构].[月]),5,1))
说明:
descendants函数作用为:
得到查询的年份成员在[日期].[日期层次结构].[月]层次上的所有成员;取得的这些月份成员索引号从0开始;
subset函数,从第5个[月]成员开始取,取1个成员,即取得了成员:
6月;
total函数,再汇总6月的余额,相当于没有汇总;
例子2:
上半年发生额,前六个月的发生额相加为上半年发生额:
total([金额]withinsetsubset(descendants([日期].[日期层次结构].[年]->?
year?
[日期].[日期层次结构].[月]),0,6))
说明:
descendants函数作用为:
得到查询的年份成员在[日期].[日期层次结构].[月]层次上的所有成员;取得的这些月份成员索引号从0开始;
subset函数,从第0个[月]成员开始取,取6个成员,即取得了成员:
1月至6月;
total函数,再汇总1月到6月的发生额;
firstSibling(member)
返回成员父项的第一个子项。
返回member的大哥;
例子:
firstSibling([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
20091201
lastChild(member)
返回指定成员的最后一个子项。
返回member最小的儿子
例子:
lastChild([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[200912])
结果:
20091231
siblings(member)
返回指定成员的父项的子项。
返回member的所有兄弟成员
例子:
siblings([AcrmSale].[日期].[日期].[DATE_KEY]->:
[PC].[@MEMBER].[20091210])
结果:
20091201到20091231
parallelPeriod(level[,int_exp[,member]])
返回先前时段中与指定成员具有相同相对位置的成员。
此函数与“Cousin”函数类似,但与时序的关系更为密切。
该函数先得出处于“level”的“member”的祖项(称为“祖项”);然后得出与“祖项”相距“int_exp”个位置的“祖项”同胞,并返回该同胞的子项中“member”的平行时段。
如果未指定,“int_exp”默认值为1,“member”的默认值为当前成员。
返回相对于level成员的祖项偏移量为int_exp的祖项成员的与level成员处于相同位置的成员
int_exp为正数,则要求的是该成员之前的层次,如:
parallelPeriod([月],1),如果[月]成员为200905,则parallelPeriod([月],1)值为:
200805
int_exp为负数,则要求的是该成员之后的层次,如:
parallelPeriod([月],-1),如果[月]成员为200905,则parallelPeriod([月],-1)值为:
201005
例子1:
去年同期:
即查询月为200905的话,该指标为200805该指标
total([金额]withinsetparallelPeriod([日期].[日期层次结构].[年],1,[日期].[日期层次结构].[月]->?
mon?
))
例子2:
同比增长:
相对于去年的增长
([销售金额]-value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额])))/value(tuple(parallelPeriod([ARPD-Sale].[日期].[日期].[年]),[销售金额]))
说明:
parallelPeriod([ARPD-Sale].[日期].[日期].[年])为取得去年相对于[年]成员,level为1的成员:
[月]成员;
tuple()为取得每个成员:
[月]与[销售金额]的交叉单元格
value()为取得交叉单元格的值
periodsToDate(level,member)