在多维表达式 (MDX) 中,下列语句用于管理 MDX 脚本中的上下文、作用域和流控制。
主题 | 说明 |
calculate语句 | 计算子多维数据集,还可以确定子多维数据集中所包含的求解次序 |
case语句 | 允许有条件地从多次比较中返回特定值 |
existing关键字 | 强制在当前上下文中计算所指定的集 |
freeze语句 | 将所指定子多维数据集的单元值锁定为其当前值 |
if语句 | 如果条件为真,则执行语句 |
scope语句 | 将指定MDX语句的作用域限制于指定的子多维数据集 |
示例:
假设有一组指标:原本指标的“Act”、“QOF”和“AOP”值,就是这些度量值本身的Sum。
但是对于某个维度指标“服务组滚动离职率”来说,这三个度量值的计算公式则是“服务组滚动离职人数”(指标编码为205)/ 服务组平均在职人数(指标编码为24)。
现在使用Scope脚本实现上述功能:
scope
(
{
[Measures].[KPI Act]
,[Measures].[KPI Q0F]
,[Measures].[KPI AOP]
,[Measures].[Forcast]
}
)
[KPI].[KPI Hierarchy].[KPI].&[209]=iif
(
[KPI].[KPI Hierarchy].[KPI].&[24]=0
,null
,[KPI].[KPI Hierarchy].[KPI].&[205]/[KPI].[KPI Hierarchy].[KPI].&[24]
)
end scope
这样,如果未来使用指标“服务组滚动离职率”的“Act”等值的时候,其数值不是直接引用“Act”字段的值,而是上述计算公式计算以后得到的值。
附:脚本语法
Subcube_Expression ::=(Auxiliary_Subcube [, Auxiliary_Subcube,...n])
Auxiliary_Subcube ::=
Limited_Set
| Root([dimension_name])
| Leaves([dimension_name])
Limited_Set ::=
single_tuple
| member
| Common_Grain_Members
| hierarchy.members
| level.members
| {}
| Descendants
(
Member
, [level
[
, SELF
| AFTER
| BEFORE
| SELF_AND_AFTER
| SELF_AND_BEFORE
| SELF_BEFORE_AFTER
| LEAVES
]
)
[* <limited set>]