Order
排列指定集合中的成员,可以选择保留或打乱原有的层次结构。
语法
Order(set, numeric_value [ , { ASC | DESC | BASC | BDESC } ])
参数
set | 返回集的有效多维表达式 (MDX),按集合中位置靠后的维度成员进行排序。 |
numeric_value | 返回集的排序依据,优先级高于set。 |
备注
Order 有两种变化形式:按层次结构排列(ASC 或 DESC)和不按层次结构排列(BASC 或 BDESC,其中 B 代表打乱原有层次结构)。按层次结构排列的排序首先按成员在层次结构中的位置对其进行排序,然后再对每个级别进行排序。而不按层次结构排列的排序在对集合中的成员排序时不考虑层次结构。如果没有明确说明,则根据默认设置使用 ASC。
示例一
select Order({[科目].&[50236],[科目].&[50240]}*{[期间].[2023年].[2023年3季度].Children},[版本].&[50672],desc) on rows, {[版本].&[50672]} on columns from [模型一]
where ([组织].&[50582],[场景].&[50685],[产品].&[50688])
运行结果:
产品: 不分
场景: 累计预算
组织: 北京总部本部
科目 | 期间 | 年初编报01版本 |
研究开发费 | ||
2023年9月 | 6800.00 | |
2023年8月 | 4200.00 | |
2023年7月 | -10000.00 | |
会务费 | ||
2023年7月 | -510.89 | |
2023年9月 | -5800.00 | |
2023年8月 | -10000.00 |
由于期间维度[2023年3季度]的子项[2023年7月]、[2023年8月]、[2023年9月]的[研究开发费]值分别为-10000、4200、6800,在Order函数的集合中,期间维度位置靠后,所以会对[研究开发费]的[2023年3季度]的子项的值进行降序排列,顺序为6800、4200、-10000,对应返回的期间顺序为[2023年9月]、[2023年8月]、[2023年7月]; 由于期间维度[2023年3季度]的子项[2023年7月]、[2023年8月]、[2023年9月]的[会务费]对应的值分别为-510.89、-10000、-5800,在Order函数的集合中,期间维度位置靠后,所以会对[会务费]的[2023年3季度]的子项的值进行降序排列,顺序为-510.89、-5800、-10000,对应返回的期间顺序为[2023年7月]、[2023年9月]、[2023年8月]。
示例二
select Order({[期间].[2023年].[2023年3季度].Children}*{[科目].&[50236],[科目].&[50240]},[版本].&[50672],bdesc) on rows, {[版本].&[50672]} on columns from [模型一]
where ([组织].&[50582],[场景].&[50685],[产品].&[50688])
运行结果:
产品: 不分
场景: 累计预算
组织: 北京总部本部
期间 | 科目 | 年初编报01版本 |
2023年9月 | 研究开发费 | 6800.00 |
2023年8月 | 研究开发费 | 4200.00 |
2023年7月 | 会务费 | -510.89 |
2023年9月 | 会务费 | -5800.00 |
2023年7月 | 研究开发费 | -10000.00 |
2023年8月 | 会务费 | -10000.00 |
由于期间维度[2023年3季度]的子项[2023年7月]、[2023年8月]、[2023年9月]的[研究开发费]值分别为-10000、4200、6800,[会务费]对应的值分别为-510.89、-10000、-5800,在Order函数中使用了bdesc参数,来打破集合中维度成员的层次结构,对数据进行降序排列,所以顺序为6800、4200、-510.89、-5800、-10000、-10000,对应返回的维度组合顺序为[2023年9月]的[研究开发费]、[2023年8月]的[研究开发费]、[2023年7月]的[会务费]、[2023年9月]的[会务费]、[2023年7月]的[研究开发费]、[2023年8月]的[会务费]。