• Cognos 维度函数


    以下函数说明均来自Cognos ReportNet说明,函数例子由本人总结编写

     

    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_exp set 的大小大于 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([余额] within set subset(descendants([日期].[日期层次结构][]->?year?,[日期].[日期层次结构].[]),5,1))

    说明:

    descendants函数作用为:得到查询的年份成员 [日期].[日期层次结构].[] 层次上的所有成员;取得的这些月份成员索引号从0开始;

    subset 函数,从第5[]成员开始取,取1个成员,即取得了成员:6月;

    total 函数,再汇总6月的余额,相当于没有汇总;

     

    例子2:

    上半年发生额前六个月的发生额相加为上半年发生额:

    total([金额] within set subset(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([金额] within set parallelPeriod([日期].[日期层次结构].[],1,[日期].[日期层次结构].[]->?mon?))

     

    例子2

    同比增长:相对于去年的增长

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

    /

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

    说明:

    parallelPeriod([ARPD-Sale].[日期].[日期].[]) 为取得去年相对于[]成员,level1的成员:[] 成员;

    tuple() 为取得每个成员: [] [销售金额] 的交叉单元格

    value() 为取得交叉单元格的值

     

    periodsToDate ( level , member )

    返回与指定成员处于同一级别的同胞成员集,并受指定级别限制。 它先查找处于“level”级别的“member”成员的祖项,然后返回此祖项中与“member”成员处于同一级别的子项(直到包括“member”成员)。 通常与时间维度配合使用。

    返回member成员的level祖项的子项直至包括到member

     

    例子1

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

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

     

     

    例子2

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

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

     

    例子3:

    except(periodsToDate([AcrmSale].[日期].[日期].[YEAR],[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091210]),periodsToDate([AcrmSale].[日期].[日期].[YEAR],prevMember([AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091201])))

     

    closingPeriod ( level [, member ] )

    返回指定级别上member成员的子项中的最后一个同胞。 通常与时间维度配合使用。

    例子1: closingPeriod([AcrmSale].[日期].[日期].[DATE_KEY],[AcrmSale].[日期].[日期].[MONTH]->:[PC].[@MEMBER].[200912])

    结果: 20091231

     

    例子2: closingPeriod([AcrmSale].[日期].[日期].[DATE_KEY],[AcrmSale].[日期].[日期].[YEAR]->:[PC].[@MEMBER].[2009])

    结果:20091231

     

    例子3: closingPeriod([AcrmSale].[日期].[日期].[MONTH],[AcrmSale].[日期].[日期].[YEAR]->:[PC].[@MEMBER].[2009])

    结果:200912

     

    例子4: closingPeriod([AcrmSale].[日期].[日期].[DATE_KEY])

    结果:20091231

     

    lastPeriods ( integer_exp , member )

    返回同一级别中以指定成员结尾的成员集。 返回的成员数是“integer_exp”的绝对值。  如果“integer_exp”为负数,则返回指定成员后面的成员,包括指定成员。 通常与时间维度配合使用。

    如果:integer_exp 是正数,则返回截止到member成员的前面integer_exp个成员

    如果:integer_exp 是负数,则返回从member成员开始的后面 integer_exp 的绝对值 个数的成员

    例子1

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

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

        total([金额] within set

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

     

    例子lastPeriods(-2,[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091210])

    结果:20091210 20091211

    例子lastPeriods(2,[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091210])

    结果: 20091209 20091210

     

    openingPeriod ( level [ , member ] )

    在指定级别上某一成员的子项当中,返回第一个同胞成员。 通常与时间维度配合使用。

    作用与closingPeriod函数相反

    例子1: openingPeriod ([AcrmSale].[日期].[日期].[DATE_KEY],[AcrmSale].[日期].[日期].[MONTH]->:[PC].[@MEMBER].[200912])

    结果: 20091201

     

    例子2: openingPeriod ([AcrmSale].[日期].[日期].[DATE_KEY],[AcrmSale].[日期].[日期].[YEAR]->:[PC].[@MEMBER].[2009])

    结果:20090101

     

    例子3: openingPeriod ([AcrmSale].[日期].[日期].[MONTH],[AcrmSale].[日期].[日期].[YEAR]->:[PC].[@MEMBER].[2009])

    结果:200901

     

    例子4: openingPeriod ([AcrmSale].[日期].[日期].[DATE_KEY])

    结果:20090101

     

    generate ( set_exp1 , set_exp2 [ , ALL ] )

    此函数为“set_exp1”中的每个成员计算“set_exp2”,然后合并成结果集。 如果指定了 ALL,则结果中保留重复值。

     

    nestedSet ( set_expr1 , set_expr2 )

    返回在 set_expr1 当前成员的上下文中求得的一组set_expr2 成员。

     

    filter ( set_exp , boolean_exp )

    返回按布尔条件过滤指定集后得出的集。 当且仅当“boolean_exp”的对应值为真时,结果中才包含每个成员。

     

    例子:

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

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

       total([金额] within set

            filter(

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

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

                  ))

     

    item ( set_exp , index )

    返回集中处于指定位置的成员。集的索引从零算起。

     

    set ( member { , member } )

    返回表达式中定义的成员列表。 成员必须属于同一层级。

     

    tail ( set_exp [ , index_exp ] )

    返回“set exp”中最后的“index_exp”个要素。 “index_exp”的默认值为 1

    例子:tail(periodsToDate([AcrmSale].[日期].[日期].[YEAR],[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091210]),1)

    结果:20091210

     

    head ( set_exp [ , index_exp ] )

    返回“set_exp”中的第一个要素“index_exp” “index_exp”的默认值为 1

     

    subset ( set_exp, index_exp1 [ , index_exp2 ] )

    返回指定集中成员的子集,从“index_exp1”开始。 如果指定了计数“index_exp2”,则返回多个成员(如果存在)。 否则,将返回所有剩余成员。

    返回set_exp成员集中,从索引号index_exp1开始(索引号从0开始) index_exp2 个成员,如果不指定index_exp2,则返回所有剩余成员;

     

    members ( hierarchy | level )

    返回层级或级别中的成员集。 如果返回层级中的成员,则结果中无法保证成员的顺序;要按某一个顺序列出成员,必须使用明确排序的函数(如 hierarchize)。

     

     

     

    except ( set_exp1 , set_exp2 [,ALL] )

    返回那些属于“set_exp1”但不属于“set_exp2”的成员。 只有当可选关键字“ALL”用作第三个自变量时,才会保留重复项。

    例子:

    求时间段内的合计1

    total( [指标值1]

           within set

              except(

             lastperiods(-9999,[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091201]),

                           lastperiods(-9999,nextMember([AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091201]))

    )

    )

    例子:

    求时间段内的合计2这种更好

    total( [指标值1]

           within set

    except(periodsToDate([AcrmSale].[日期].[日期].[YEAR],[AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091210]),periodsToDate([AcrmSale].[日期].[日期].[YEAR],prevMember([AcrmSale].[日期].[日期].[DATE_KEY]->:[PC].[@MEMBER].[20091201])))

     

     

    去年同时段总计;

    total([金额] within set

                EXCEPT(LASTPERIODS(-90000,parallelPeriod([日期].[日期层次结构].[],1,

                                                         [日期].[日期层次结构].[]->?st_dt?

                                          )

                       ),                                      

                       LASTPERIODS(-90000,parallelPeriod([日期].[日期层次结构].[],1,

                                                         nextMember([日期].[日期层次结构].[]->?end_dt?)

                                          )

                       )

                )

    )

     

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

    通过为指定集中的每个值计算“value_exp”而得出一组值,来排列指定集中的成员,并通过第三个参数进行修改。 有两种排序方法: 层级式(ASC DESC)和非层级式(BASC BDESC,此处 B 表示打破层级)。 层级式排序方法首先按照成员在层级中的位置来排列成员。 然后它根据“value_exp”排列每个成员的子项。 非层级式排序方法对集中的成员进行排序时不考虑层级。 如果没有明确指明,则默认为 ASC

     

    hierarchize ( set_exp )

    此函数用于对层级中某个集的成员进行排序。 在未指定其它排序条件时,级别中的成员按自然顺序(即成员在维度上的默认顺序)进行排列。

    例子:hierarchize(members([AcrmSale].[日期].[日期].[DATE_KEY]))

     

    intersect ( set_exp1 , set_exp2 [ , ALL ] )

    返回两个输入集的交集。 只有当可选关键字“ALL”用作第三个自变量时,结果中才会保留重复项。

     

    union ( set_exp1 , set_exp2 [ , ALL ] )

    此函数返回“set_exp1”“set_exp2”这两个集的并集。  只有当可选关键字“ALL”用作第三个自变量时,结果中才会保留重复项。

     

    bottomCount ( set_exp , index_exp , numeric_exp )

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

     

    topCount ( set_exp , index_exp , numeric_exp )

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

     

    bottomPercent ( set_exp , numeric_exp1 , numeric_exp2 )

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

     

    topPercent ( set_exp , numeric_exp1, numeric_exp2 )

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

     

    bottomSum ( set_exp , numeric_exp1 , numeric_exp2 )

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

     

    topSum ( set_exp , numeric_exp1 , numeric_exp2 )

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

     

    completeTuple ( member { , member } )

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

     

     

    tuple (  member { , member } )

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

     

     

    value ( tuple )

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

     

    caption ( level | member | set_exp )

    返回指定自变量的标题值。

     

    substring ( string_exp , integer_exp1 [ , integer_exp2 ] )

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

     

    roleValue ( string [ , member | set_exp ] )

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

     

    ordinal ( level )

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

     

    rank ( numeric_expr [ ASC | DESC ] [ tuple member_expr {, member_expr } ] within set set_expr  )

    返回选定数据项的排名值。返回的排名类型 (Olympic、密集或序列) 取决于数据源。排序顺序是可选的;默认情况下,假定为 DESC

     

    percentage ( numeric_expr  [ tuple member_expr {, member_expr } ] within set set_expr )

    返回选定数据项占合计值的百分比。

  • 相关阅读:
    sql 查询服务器硬盘剩余空间
    SQL语句导致cpu占用如此高
    (@WhiteTaken)Unity中Invoke的用法
    (@WhiteTaken)设计模式学习——抽象工厂模式
    (@WhiteTaken)设计模式学习——工厂方法模式
    (@WhiteTaken)设计模式学习——简单工厂模式
    c#中的泛型委托(@WhiteTaken)
    c#中@的作用
    lua读书笔记(@WhiteTaken)
    Unity中的预制的Attributes
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/2171179.html
Copyright © 2020-2023  润新知