多维表达式(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,以提供国内外总销售额预测值。