MDX函数

MDX重点函数

成员函数


1、.CurrentMember

  • 获取运行时当前的成员,用法:<Dimension>.CurrentMember 。

2、.Parent

  • 获取运行时当前的成员的父成员。用法:<Member>.Parent。

3、.PrevMember/.NextMember

  • 返回当前成员的前一个/后一个成员。<Member>.FirstChild/LastChild

 4、.FirstChild/.LastChild

  • 返回当前成员的第一个/最后一个子成员。语法:<Member>.FirstChild/LastChild

 5、.FirstSibling/LastSibling

  • 返回当前同级的第一个/最后一个成员。语法:<Member>.FirstSibling/LastSibling。
  • 相当于 <Member>.Parent.FirstChild/.lastChild

 6、Ancestor

  • 返回特定级别的祖先成员。语法如下:
  • Ancestor(<Member>, <Level>)
  • Ancestor(<Member>, <Numeric Expression>)
  • ([Measures].[总电量], [运营类型大类].[运营类型大类].[运营类型大类].CurrentMember)/ sum(Ancestor([运营类型大类].[运营类型大类].[运营类型大类].CurrentMember,1))

     

7、LAG

  • 返回当前成员开始往前数的本层的第几个成员,语法:<Member>.Lag(n)。
  • n是索引,0是它本身,1是前一个(.PrevMember)。

 8、OpeningPeriod/ClosingPeriod

  • 返回某个层次上第一个/最后一个后代成员,语法:OpeningPeriod([<Level>[, <Member>])。

9、ParallelPeriod

  • 返回一个成员同层次对应位置的成员。语法:ParallelPeriod([<Level>[, <n>[, <Member>]]])。
  • 在时间维度上取同期(如上年同期)等时候要用到它。
  • 使用 PARALLELEPRIOD(Level, N, Member) 先把同比值查询出来,Level 指定的是年,1 表示 1年前,Member 就是指当前成员并且表示月。所以整个表达的意思就是查询当前成员1年前的相对应的那个月的 Reseller Sales Amount 的值是多少

其它函数


1、IS

  • 判断是否为同一个对象。语法: object is object2。

2、IsEmpey

  • 判断一个值是否为空。语法:IsEmpey(表达式)。

3、IIF

  • 根据条件返回值,类似 Excel 的 If 函数。语法:iif(<布尔表达式>, <值 1>, <值 2>)。
  • 如果布尔表达式为真,返回值 1,否则,返回值 2。

4、ITEM

  • 根据索引返回集合中元素。语法:item(set, <index>)。
  • 返回类型一般为元组。

计算成员


  • 假设你想创建一个度量,它的值不是来自事实表的列,而是来自一个 MDX 公式。一种方式使用 with member 字句,如下图:
  • 如果每个 MDX 查询中包含这个子句,更好的办法是,把这个成员定义到schema中,作为Cube定义的一部分,如下:
  • FORMAT_STRING 属性值同样可以使用一个表达式。当格式化一个特定单元格时,首先这个表达式会被运算以产生一个格式字符串,然后把这个格式字符串应用到单元格。下面使用一个条件化的格式字符串:
  • <CalculatedMemberProperty name="FORMAT_STRING" expression="Iif(Value < 0,'|($#,##0.00)|style=red', '|$#,##0.00|style=green')"/>

     

  • 计算成员的另外一个属性是 DATATYPE,可以有 String、IntegerNumeric 这些取值,如下:
  • 可以给计算成员指定 SOLVE_ORDER 属性,用于确定计算时的优先级,如下:
  • SOLVE_ORDER 属性是一个整数,默认是 0,值大者胜出

猜你喜欢

转载自www.cnblogs.com/tgzhu/p/9224753.html
MDX
今日推荐