使用 RollupChildren 函数 (MDX)

多维表达式(MDX)RollupChildren [搜索和替换脚本] 函数汇总成员的子元素,对每个子元素应用不同的一元运算符,并作为数字返回此汇总值。 一元运算符可由与子成员关联的成员属性提供,也可以是直接提供给函数的字符串表达式。

RollupChildren 函数示例

RollupChildren函数在多维表达式(MDX)语句中的使用易于解释,但该函数对MDX查询的影响可能非常广泛。

函数 RollupChildren 的效果发生在 MDX 查询中,旨在对现有多维数据集数据执行选择性分析。 例如,下表包含 Net Sales 父成员的子成员列表,其一元运算符(由 UNARY_OPERATOR 成员属性表示)显示在括号中。

父成员 子成员
净销售额 国内销售(+)

国内退货(-)

外国销售(+)

外国投资收益 (-)

净销售父成员目前提供净销售额减去国内外总销售额值,其中国内外回报减去汇总的一部分。

然而,你想要提供国内外总销售额的快速而轻松的预测加上10%,忽视国内外的回报。 若要计算此值,可以通过以下两种方式之一使用 RollupChildren 函数:使用自定义成员属性或函数 IIf

使用自定义成员属性

如果汇总计算是经常执行的操作,一种方法是创建一个成员属性,该属性用于存储特定函数的每个子项的运算符。 下表显示有效的一元运算符并描述预期结果。

操作员 结果
+ 总数 = 总数 + 当前子项
- total = total - current child
* 总计 = 总计 * 当前子项
/ total = total / 当下的子项
~ 汇总中不使用子级。 忽略了孩子的价值。

例如,可以创建调用 SALES_OPERATOR 的成员属性,并将以下一元运算符分配给该成员属性,如下表所示。

上级成员 子成员
净销售额 国内销售(+)

国内退货(~)

外国销售(+)

外国收益 (~)

有了这个新的成员属性,以下 MDX 语句将快速且高效地执行毛销售额估算操作(忽略境外和国内退货):

RollupChildren([Net Sales], [Net Sales].CurrentMember.Properties("SALES_OPERATOR")) * 1.1  

调用函数时,将使用存储在成员属性中的运算符将每个子项的值应用于总计。 忽略国内外退货的成员,通过 RollupChildren 函数返回的汇总总数乘以 1.1。

使用 IIf 函数

如果示例操作不常见,或者该操作仅适用于一个 MDX 查询,那么可以使用 IIf 函数结合 RollupChildren 函数来提供相同的结果。 以下 MDX 查询提供与前面的 MDX 示例相同的结果,但这样做无需使用自定义成员属性:

RollupChildren([Net Sales], IIf([Net Sales].CurrentMember.Properties("UNARY_OPERATOR") = "-", "~", [Net Sales].CurrentMember.Properties("UNARY_OPERATOR))) * 1.1  

MDX 语句检查子成员的一元运算符。 如果一元运算符用于减法(与国内外返回成员一样),该 IIf 函数将替换波形符(~) 一元运算符。 否则,IIf 函数使用子对象的一元运算符。 最后,返回的汇总总额乘以1.1,以提供国内外总销售额预测值。

另请参阅

数据操作(MDX)