cognos函数.doc_第1页
cognos函数.doc_第2页
cognos函数.doc_第3页
cognos函数.doc_第4页
cognos函数.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Cognos函数(一) - 时间函数 在之前的博客中,我们了解了ReportStudio的大概功能,在这一系列的博客中,会分享一下Cognos函数的使用,在做报表时,熟练地使用函数,还是很有帮助的。我们先来了解下时间函数官方文档:Cognos Report Studio User Guide 10.2.1.pdf从网上找到的文档:/detail/jolingogo/7206013这里的时间函数和数据库中的时间函数差不多,主要是对时间进行一些处理。这里列几个常用的,很简单1. _add_days ( date_expression, integer_expression )2. _add_months ( date_expression, integer_expression )3. _add_years ( date_expression, integer_expression )4. _first_of_month ( date_expression )5. _last_of_month ( date_expression )增加天数啊,月份啊,月份的第1天啊,最后1天啊,都是很常用的,在过滤器中使用比较常用,主要来对日期进行过滤需求:我们现在只显示今天和昨天2天的数据1. 选择数据包2. 基本报表3. 添加过滤器java view plain copy print?1. 销售.时间.时间.天.日期=cast(?p_year?|-|?p_month?|-|?p_date?asdate)2. or3. 销售.时间.时间.天.日期=_add_days(4. cast(?p_year?|-|?p_month?|-|?p_date?asdate),-15. )销售.时间.时间.天.日期 = cast(?p_year?| - |?p_month?| - |?p_date? as date)or销售.时间.时间.天.日期 = _add_days (cast(?p_year?| - |?p_month?| - |?p_date? as date) , -1)4.运行一下报表好了,简单的例子就实现了。Cognos函数(二) - 宏函数 在这里介绍下宏函数的使用,做报表的时候,使用的也挺多,做一个日期的成员,然后做交集元组。这里简单介绍下2个函数1. 基本概念2. 基本报表3. 使用宏函数,根据用户输入,做一个当年注意,这个层级,要选择我们使用的时间维度的名称代码:java view plain copy print?1. 销售.时间.时间.年份-Time.#sb(prompt(p_year,integer)#销售.时间.时间.年份-Time.#sb(prompt(p_year , integer)#4. 把当年拖到报表上5. 运行他们两列是一样的用同样的方法,也可以做当日,当月,上月等等,但是Cognos示例库中的维度含有季度,不太好拼宏函数,所以没有写例子,如果想实验的话,可以将维度中的季度删掉。Cognos函数(三) - 报表函数 这里介绍一个小功能,有的报表可能需要显示系统日期1. 拖一个文本项目2. 选中文本项目,修改源类型改成“报表表达式”3. 定义表达式 today()显示今天运行下看看4. 显示昨天 定义表达式我们先要将Today()转换为TimeStamp,然后使用_add_days函数 5. 报表函数有很多,有时间可以学习下Cognos函数(四) - ParamDisplayValue和ParamValue 这回,我们介绍2个函数,之前也用过的ParamDisplayValue和ParamValue这2个函数,可以获取参数的显示值和使用值1. 基本报表新建一个提示界面2. 添加值提示运行下3. 拖2个文本项目选中之后,将源类型,改为报表表达式定义表达式:好了,运行下看看结果显示出,参数的显示值,和他的IDCognos函数(五) - running-difference 这个介绍一个函数:running-difference1. 基本报表2. running-difference函数我们现在计算下(T+1)月-(T)月的差值,创建1个查询计算拖到列表上 数据项 差额 running-difference(数量) 运行结果: 3. 原理java view plain copy print?running-difference(数字型表达式at表达式,表达式prefilter)running-difference(数字型表达式prefilter):=for表达式,表达式|forreport|auto按行返回一组值的运行差额,其为当前行的值与前面行(包括当前行)的值之间的差额。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。示例:running-difference(数量)结果:对于每一行,返回数量以及当前行的值与前面行的值之间的运行差额。Cognos函数(六) - total的使用 这回介绍个函数,total,这个是很常用的,简单介绍下。1. 基本报表现在呢,数据会根据产品系列和订购方法 进行group by,然后直接sum2. TOTAL函数概述java view plain copy print? total(distinct表达式auto)total(distinct表达式forall|any表达式,表达式)total(distinct表达式forreport)返回选定数据项的合计值。Distinct是与产品的较早版本兼容的替换表达式。此函数出现在“GO数据仓库(分析)”数据包中的“预算与实际”示样报表中。示例:total(销售额)结果:返回所有销售额的合计值。1. total ( distinct 表达式 auto )total ( distinct 表达式 for all|any 表达式 , 表达式 )total ( distinct 表达式 for report )2. 返回选定数据项的合计值。Distinct 是与产品的较早版本兼容的替换表达式。此函数出现在“GO 数据仓库(分析)”数据包中的“预算与实际”示样报表中。3. 示例:total ( 销售额 )4. 结果:返回所有销售额的合计值。3. 新建数据项3.1 针对产品系列和订购方法进行汇总默认的话,也会这样(total(数量)3.2 针对产品系列汇总3.3 针对订购方法汇总4. 运行其实这个for,会在SQL里生成sum over()像这样:sql view plain copy print?selectT0.C0订购方法类型key,T0.C1产品系列key,T0.C2数量,T0.C2c4,sum(T0.C2)over(partitionbyT0.C0)订购方法汇总,sum(T0.C2)over(partitionbyT0.C1)产品类型汇总from(selectSLS_ORDER_METHOD_DIM.ORDER_METHOD_SCC0,coguda11.PRODUCT_LINE_SCC1,sum(SLS_SALES_FACT.QUANTITY)C2from5. select 6. T0.C0 订购方法类型key , 7. T0.C1 产品系列key , 8. T0.C2 数量 , 9. T0.C2 c4 , 10. sum(T0.C2) over (partition by T0.C0) 订购方法汇总 , 11. sum(T0.C2) over (partition by T0.C1) 产品类型汇总 12. from (13. select 14. SLS_ORDER_METHOD_DIM.ORDER_METHOD_SC C0 , 15. coguda11.PRODUCT_LINE_SC C1 , 16. sum(SLS_SALES_FACT.QUANTITY) C2 17. from 好了,就说到这里。 running-difference ( 数字型表达式 at 表达式 , 表达式 prefilter )running-difference ( 数字型表达式 prefilter ) := for 表达式 , 表达式 |for report|auto按行返回一组值的运行差额,其为当前行的值与前面行(包括当前行)的值之间的差额。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。示例:running-difference ( 数量 )结果:对于每一行,返回数量以及当前行的值与前面行的值之间的运行差额。Cognos函数(七) - percentage的使用 这回我们介绍另一个函数的使用,percentage,是一个求百分比的函数1.基本报表2. percentage 概述java view plain copy print?1. percentage(数字型表达式at表达式,表达式prefilter)2. percentage(数字型表达式prefilter):=for表达式,表达式|forreport|auto3. 返回选定数据项占合计值的百分比。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。4. 此函数出现在“百分比计算(按年)”交互式示样报表中。percentage ( 数字型表达式 at 表达式 , 表达式 prefilter )percentage ( 数字型表达式 prefilter ) := for 表达式 , 表达式 |for report|auto返回选定数据项占合计值的百分比。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。此函数出现在“百分比计算(按年)”交互式示样报表中。3. 新建数据项3.1 for产品系列3.2 for订购方法3.3 for产品&订购4. 运行对于数量来说,每一个单元格都是根据产品系列和订购方法进行汇总的;for产品系列的时候,分子是当前单元格,分母是根据产品系列进行汇总;for订购方法的时候,分子是当前单元格,分母是根据产品系列进行汇总;for产品&订购的时候,分子式当前单元格,分母是根据产品系列和订购方法进行汇总的。附SQL:sql view plain copy print?1. select2. distinctT0.C0订购方法类型key,3. T0.C1产品系列key,4. T0.C2数量,5. (first_value(T0.C2)over(partitionbyT0.C0,T0.C1)*1.0e0)/6. nullif(sum(T0.C3)over(partitionbyT0.C1),0)for产品系列,7. 8. (first_value(T0.C2)9. over(partitionbyT0.C0,T0.C1)*1.0e0)/10. nullif(sum(T0.C3)over(partitionbyT0.C0),0)for订购方法,11. 12. (first_value(T0.C2)13. over(partitionbyT0.C0,T0.C1)*1.0e0)/14. nullif(first_value(T0.C3)15. over(partitionbyT0.C1,T0.C0),16. 0)for产品_订购17. from(18. 19. selectT0.C0C0,20. T0.C1C1,21. T0.C2C2,22. first_value(T0.C2)over(partitionbyT0.C0,T0.C1)C323. from(24. 25. select26. SLS_ORDER_METHOD_DIM.ORDER_METHOD_SCC0,27. coguda11.PRODUCT_LINE_SCC1,28. sum(SLS_SALES_FACT.QUANTITY)C229. fromGOSALESDW.SLS_ORDER_METHOD_DIMSLS_ORDER_METHOD_DIM,select distinct T0.C0 订购方法类型key, T0.C1 产品系列key, T0.C2 数量, (first_value(T0.C2) over(partition by T0.C0, T0.C1) * 1.0e0) / nullif(sum(T0.C3) over(partition by T0.C1), 0) for产品系列, (first_value(T0.C2) over(partition by T0.C0, T0.C1) * 1.0e0) / nullif(sum(T0.C3) over(partition by T0.C0), 0) for订购方法, (first_value(T0.C2) over(partition by T0.C0, T0.C1) * 1.0e0) / nullif(first_value(T0.C3) over(partition by T0.C1, T0.C0), 0) for产品_订购 from ( select T0.C0 C0, T0.C1 C1, T0.C2 C2, first_value(T0.C2) over(partition by T0.C0, T0.C1) C3 from ( select SLS_ORDER_METHOD_DIM.ORDER_METHOD_SC C0, coguda11.PRODUCT_LINE_SC C1, sum(SLS_SALES_FACT.QUANTITY) C2 from GOSALESDW.SLS_ORDER_METHOD_DIM SLS_ORDER_METHOD_DIM,好了,这样就可以了,稍后,研究下这个first_value事干嘛的,真没用过。Cognos函数(八) - parent & children 这里来介绍2个简单的维度函数:parent和children顾名思义,就是父亲和孩子1. 官方定义这2个函数是蛮简单的,这里就简单举个小例子2. 实例新建一个集我们可以获取到 GO Americas 组织下的子部门这样可以获取GO Americas 营业单位 的父亲组织3. 运行好了,就这样.Cognos函数(九) - tuple & completeTuple 这里我们介绍2个函数,在维度建模的时候会使用的到1. 官方定义java view plain copy print?1. tuple(成员,成员)2. 根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。此功能显式包括所有维度中的当前成员,这些维度未在自变量中另行指定。假定未在评估上下文中指定的任何维度的当前成员是该维度的默认成员。可使用“值”功能来获取此单元格的值。3. 示例:tuple(登山装备,传真)4. 结果:返回“登山装备”销售额(按传真)。tuple ( 成员 , 成员 )根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。此功能显式包括所有维度中的当前成员,这些维度未在自变量中另行指定。假定未在评估上下文中指定的任何维度的当前成员是该维度的默认成员。可使用“值”功能来获取此单元格的值。示例:tuple ( 登山装备 , 传真 )结果:返回“登山装备”销售额(按传真)。html view plain copy print?1. completeTuple(成员,成员)2. 根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。不过,completeTuple()暗指包括参数中未另外指定的所有维度的默认成员,而非当前成员。3. 如果未在completetuple函数中定义currentMeasure,那么completeTuple会在查询中使用默认度量而非currentMeasure。此函数出现在“GO数据仓库(分析)”数据包中的“计划员工人数”示样报表中。completeTuple ( 成员 , 成员 )根据指定成员(它们必须来自不同的维度)确定单元格位置(交集)。不过,completeTuple () 暗指包括参数中未另外指定的所有维度的默认成员,而非当前成员。如果未在 completetuple 函数中定义 currentMeasure,那么 completeTuple 会在查询中使用默认度量而非 currentMeasure。此函数出现在“GO 数据仓库(分析)”数据包中的“计划员工人数”示样报表中。个人感觉这2个函数就和交集元组的作用一样,可以获得不同维度相交之后的数据2. 实例我们就按照官方的解释来做个例子看看基本报表我们用这个交叉表作为基础数据进行对比新建数据项,使用tuple和completeTuple函数最后的展现这里我们拖了一个交集元组做对比我们看下展示的数据我们可以看出来tuple其实和交集元组一样,将2个维度交集之后取出对应的数据,如果外面还有其他的维度,一样可以继续做交集completeTuple函数稍微有点不一样,如果没有其他维度的话是一样的;再和其他维度相交的话,默认是和根成员相交不是当前成员tuple函数经常会和value一起使用。Cognos函数(十) - currentMember & prevMember & nextMember 我们继续介绍几个维度函数currentMember & nextMember & prevMember这几个是获取当前成员,前一个成员,后一个成员的,比较简单,挺常用的1. 官方定义java view plain copy print?1. currentMember(层级)2. 返回迭代过程中该层级的当前成员。如果“层级”不在所计算的表达式的上下文中,那么假定为其默认成员。此函数显示在“卷动和移动平均值”互动式示样报表中。currentMember ( 层级 )返回迭代过程中该层级的当前成员。如果“层级”不在所计算的表达式的上下文中,那么假定为其默认成员。此函数显示在“卷动和移动平均值”互动式示样报表中。java view plain copy print?1. nextMember(成员)2. 返回“成员”级别中的下一个成员。3. 示例:nextMember(户外防护用品)4. 结果:高尔夫装备nextMember ( 成员 )返回“成员”级别中的下一个成员。示例:nextMember ( 户外防护用品 )结果:高尔夫装备java view plain copy print?1. currentMember(层级)2. 返回迭代过程中该层级的当前成员。如果“层级”不在所计算的表达式的上下文中,那么假定为其默认成员。此函数显示在“卷动和移动平均值”互动式示样报表中。currentMember ( 层级 )返回迭代过程中该层级的当前成员。如果“层级”不在所计算的表达式的上下文中,那么假定为其默认成员。此函数显示在“卷动和移动平均值”互动式示样报表中。2. 实例我们就这样,看下产品类型下的当前成员,上一个成员,下一个成员运行结果:Cognos函数(十一) - parallelPeriod 这回我们来介绍一个很常用的函数,在做同比、反比啊之类的什么需求时很方便:parallelPeriod 1. 官方定义java view plain copy print?1. parallelPeriod(级别,整数型表达式,成员)2. 返回先前时段中与“成员”具有相同相对位置的成员。此函数与同胞函数类似,但与时序的关系更为密切。该函数先得出在“级别”上的“成员”的祖项(称为“祖项”),然后得出与“祖项”相距“整数型表达式”个位置的“祖项”同胞,并返回该同胞的子项中“成员”的平行时段。如果未指定,“整数型表达式”默认值为1,“成员”的默认值为当前成员。3. 示例:parallelPeriod(大型户外设备公司.年.年.季度,-1,2006/Aug)4. 结果:2006/Nov5. 6. 示例:parallelPeriod(大型户外设备公司.年.年.季度,1,2006/Aug)7. 结果:2006/May8. 9. 示例:parallelPeriod(大型户外设备公司.年.年.年,2,2006/Aug)10. 结果:2004/AugparallelPeriod ( 级别 , 整数型表达式 , 成员 )返回先前时段中与“成员”具有相同相对位置的成员。此函数与同胞函数类似,但与时序的关系更为密切。该函数先得出在“级别”上的“成员”的祖项 (称为“祖项”),然后得出与“祖项”相距“整数型表达式”个位置的“祖项”同胞,并返回该同胞的子项中“成员”的平行时段。如果未指定,“整数型表达式”默认值为 1,“成员”的默认值为当前成员。示例:parallelPeriod ( 大型户外设备公司.年.年.季度 , -1 , 2006/Aug )结果:2006/Nov示例:parallelPeriod ( 大型户外设备公司.年.年.季度 , 1 , 2006/Aug )结果:2006/May示例:parallelPeriod ( 大型户外设备公司.年.年.年 , 2 , 2006/Aug )结果:2004/Aug这里需要注意的是,这里的整数,正数表示向左,负数表示向右2. 实例我们这里用日期来做实验基本报表:现在我们使用函数,算一下每个年份的上一年和下一年我们顺便回顾一下currentMember函数运行下看看好了,这只是个简单的使用例子,详细的同比、反比示例后面会介绍下。Cognos函数(十二) - firstChild & lastChild 这里介绍下2个相关的函数,firstChild,lastChild顾名思义就是第一个孩子和最后一个孩子。1. 官方定义java view plain copy print?1. firstChild(成员)2. 返回“成员”的第一个子项。3. 示例:firstChild(按产品系列)4. 结果:露营装备5. 示例:firstChild(露营装备)6. 结果:炊事用具firstChild ( 成员 )返回“成员”的第一个子项。示例:firstChild ( 按产品系列 )结果:露营装备示例:firstChild ( 露营装备 )结果:炊事用具java view plain copy print?1. lastChild(成员)2. 返回指定成员的最后一个子项。3. 示例:lastChild(炊事用具)4. 结果:TrailChef器具5. 示例:lastChild(按产品系列)6. 结果:高尔夫装备lastChild ( 成员 )返回指定成员的最后一个子项。示例:lastChild ( 炊事用具 )结果:TrailChef 器具示例:lastChild ( 按产品系列 )结果:高尔夫装备2. 实例好了,就是这样,函数会将他的孩子按照默认的排序取出,在做月初,月末的时候可能会用到。Cognos函数(十三) - filter 这里介绍个函数,filter,就是过滤嘛,像过滤器一样,可以对维度进行一些过滤1. 官方定义java view plain copy print?1. filter(集表达式,布尔表达式)2. 返回按布尔条件过滤指定集后得出的集。当且仅当“布尔表达式”的对应值为true时,结果中才包含每个成员。3. 示例:filter(产品系列,毛利.30)4. 结果:登山装备filter ( 集表达式 , 布尔表达式 )返回按布尔条件过滤指定集后得出的集。当且仅当“布尔表达式”的对应值为 true 时,结果中才包含每个成员。示例:filter ( 产品系列 , 毛利 .30 )结果:登山装备就是对一个数据集,根据布尔表达式的true,false进行过滤2. 实例现在我们使用filter函数将为空的列过滤掉好了,简单的介绍就到这里了,感谢。Cognos函数(十四) - roleValue 这里分享个函数,roleValue,有时候会使用到。1. 官方定义java view plain copy print?1. roleValue(字符串,成员|集表达式)2. 返回与指定上下文中的某一角色(其名称由“字符串”指定)相关联的属性值。“成员”或“集表达式”只在一些特定情况下为可选,这时它可由其他上下文派生得出。应用程序通过按角色而非按查询项目ID来访问属性,可以灵活地在不同的数据源和模型之间切换。对于按维度建模的关系(DMR)数据源,应由建模者分配角色。对于为所有数据源类型的成员定义的内蕴角色,其包含:“_业务键”、“_成员标题”、“_成员描述”、“_成员唯一名称”。可以在FrameworkManager中为层级的每个级别定义其他角色。例如,产品类型级别可包含名为“类型集装箱”的属性列,并且该产品级别可能包含“产品集装箱”属性。其中每个属性都可在FrameworkManager中分配一个名为“容器”的自定义角色。然后可以使用roleValue函数独立于实际的列名引用该属性。roleValue ( 字符串 , 成员|集表达式 )返回与指定上下文中的某一角色(其名称由“字符串”指定)相关联的属性值。“成员”或“集表达式”只在一些特定情况下为可选,这时它可由其他上下文派生得出。应用程序通过按角色而非按查询项目 ID 来访问属性,可以灵活地在不同的数据源和模型之间切换。对于按维度建模的关系 (DMR) 数据源,应由建模者分配角色。对于为所有数据源类型的成员定义的内蕴角色,其包含:“_业务键”、“_成员标题”、“_成员描述”、“_成员唯一名称”。可以在 Framework Manager 中为层级的每个级别定义其他角色。例如,产品类型级别可包含名为“类型集装箱”的属性列,并且该产品级别可能包含“产品集装箱”属性。其中每个属性都可在 Framework Manager 中分配一个名为“容器”的自定义角色。然后可以使用 roleValue 函数独立于实际的列名引用该属性。对于roleValue的使用需要在FM做相应的设置,就是维度视图中配置的2. 实例添加几个数据项运行下报表这里只在列表中实现了,在交叉表中暂时还未实现。Cognos函数(十五) - firstSibling & lastSibling 这里介绍2个函数,firstSibling & lastSibling,这2个和之前介绍的firstChild和lastChild差不多区别:firstSibling & lastSibling : 当前成员的(第一个/最后1个)兄弟节点,和当前成员是同一个层级的firstChild & lastChild : 当前成员的(第1个/最后1个)的孩子,是当前成员的子节点1. 官方定义java view plain copy print?1. firstSibling(成员)2. 返回“成员”父项的第一个子项。3. 4. 示例:firstSibling(户外防护用品)5. 结果:露营装备6. 7. 示例:firstSibling(露营装备)8. 结果:露营装备firstSibling ( 成员 )返回“成员”父项的第一个子项。示例:firstSibling ( 户外防护用品 )结果:露营装备示例:firstSibling ( 露营装备 )结果:露营装备java view plain copy print?1. lastSibling(成员)2. 返回指定成员的父项的最后一个子项。3. 4. 示例:lastSibling(露营装备)5. 结果:高尔夫装备lastSibling ( 成员 )返回指定成员的父项的最后一个子项。示例:lastSibling ( 露营装备 )结果:高尔夫装备2. 实例好了,一个简单的例子,大家可以对比着 firstChild & lastChild 的例子一起看。Cognos函数(十六) - children & level & siblings 这里主要想介绍下level和set,这2个函数,在rank中会经常使用到,所以想先介绍下, 这个children是顺带着说的,正好看到了1. 官方定义children 就是返回当前成员的孩子嘛,子集对于这个level,目前稍微有点儿疑问,他会返回指定成员所在级别上的所有成员siblings 返回该成员的兄弟节点2. 实例我们运行下看看这里的children和siblings都是可以理解的,这个level稍微有点儿问题,理论上她应该返回和siblings一样的内容,(他所在级别的成员)想一下的话,应该是她左边还有个维度给过滤掉了,试一下运行下,就会发现,的确是这样但是,这样的话,不知道为什么,siblings就没有受左边维度的影响,依然显示了所有的兄弟节点?这个有待研究。Cognos函数(十七) - 排名函数:rank 这回我们介绍下rank这个函数,是用来排名的,比较常用1. 官方定义在ReportStudio中查看函数的时候,会发现有2个rank函数,他们的语法规则不一样java view plain copy print?1. rank(表达式ASC|DESC,表达式ASC|DESCat表达式,表达式prefilter)rank(distinct表达式ASC|DESC,表达式ASC|DESCprefilter):=for表达式,表达式|forreport|auto2. 返回选定数据项的排名值。排序顺序为可选;在默认情况下,采用降序(DESC)。如果两个或更多行排名相同,那么排名值的序列中会有一个缺值(也称为Olympic排名)。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。Distinct是与产品的较早版本兼容的替换表达式。空值排名最末。此函数出现在“GO数据仓库(分析)”数据包中的“2005年排名前10位的零售商”示样报表中。rank ( 表达式 ASC|DESC , 表达式 ASC|DESC at 表达式 , 表达式 prefilter )rank ( distinct 表达式 ASC|DESC , 表达式 ASC|DESC prefilter ) := for 表达式 , 表达式 |for report|auto返回选定数据项的排名值。排序顺序为可选;在默认情况下,采用降序(DESC)。如果两个或更多行排名相同,那么排名值的序列中会有一个缺值(也称为 Olympic 排名)。“”定义函数的作用域。“at”选项定义聚合级别,只能在关系数据源上下文中使用。Distinct 是与产品的较早版本兼容的替换表达式。空值排名最末。此函数出现在“GO 数据仓库(分析)”数据包中的“2005 年排名前 10 位的零售商”示样报表中。java view plain copy print?1. rank(数字型表达式ASC|DESCtuple成员表达式,成员表达式withinset集表达式)2. 返回选定数据项的排名值。返回的排名类型(Olympic、密集或序列)取决于数据源。排序顺序是可选的;默认情况下,假定为DESC。3. 示例:rank(gosales.销售额度量.数量tuplegosales.员工.部门-西部withinsetchildren(gosales.员工.员工)rank ( 数字型表达式 ASC|DESC tuple 成员表达式 , 成员表达式 within set 集表达式 )返回选定数据项的排名值。返回的排名类型(Olympic、密集或序列)取决于数据源。排序顺序是可选的;默认情况下,假定为 DESC。示例:rank ( gosales.销售额度量.数量 tuple gosales.员工.部门 - 西部 within set children ( gosales.员工.员工 ) )个人认为,汇总下的rank是用于普通模型,就是关系模型的那种, 成员汇总下的rank用于DMR模型,就是维度建模的那种(没有特殊操作的话,维度建模也可以使用汇总下的rank)2. 实例2.1 普通排名运行下rank (数量) : 所有的产品类型一起降序排名rank (数量 for 产品系列) : 在产品系列组内进行排名2.2 按层级排名对于level和siblings可以参考之前的博客Cognos函数(十六) - children & level & siblings 在排名中,还有1个需要注意的问题是1. 为Null的数据2. 数据相同的话会使用同一个排名,排名会有断痕(忘记咋描述了)Cognos函数(十八) - 使用rank时处理为NULL的数据 对于rank函数,基本介绍可以参考上一篇博客:Cognos函数(十七) - 排名函数:rank这里我们简单介绍下怎样处理为NULL的数据刚开始遇到的时候,是这样处理的:java view plain copy print?1. if(数量isnull)2. then(null)3. else(4. rank(5. 数量withinsetlevel(6. currentMember(销售.产品.产品)7. )8. )9. )if( 数量 is null)then (null)else (rank(数量 within set level( currentMember(销售.产品.产品)但是会有问题,为NULL的数据有时还会出现百度了下,找到一种解决办法:java view plain copy print?1. if(数量isnull)2. then(null)3. else(4. rank(5. if(数量isnull)then(-999999999)else(数量)withinsetlevel(6. currentMember(销售.产品.产品)7. )8. )9. )if(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论