概述
TM1子集是维度中多个维度元素的集合,保存子集之后,视图或进程或表单等都可使用该子集。动态子集是指含有表达式的子集,该类子集中的元素会根据表达式包含的范围动态变化。
子集使用中一般注意几点:
1. TI中生成的临时子集一定要在TI最后进行回收清除,避免造成很多垃圾子集影响系统性能。(如果子集过多,用户登录时加载资源变慢会导致性能变差)
2. 表单和TI如果使用某子集,建议最好用动态子集,实在不行才用静态子集。
3. 使用子集要注意子集名的规范,避免其他开发或运维人员不清楚使用场景而误删或误改。
接下来介绍常用动态表达式。(本文不描述创建的过程,只是列举常用公式。)
说明:以下所有都以维度【维度】为例。
常见子集
1 元素过滤
1.1 成员 members
维度的某个成员:
{[维度].[元素1]}
维度的所有成员:
[维度].members
[维度].allmembers
1.2 某元素下的所有子代 DESCENDANTS
父项1下的所有子代:
DESCENDANTS([维度].[父项1])
1.3 按层级过滤 TM1FILTERBYLEVEL
父项1下的所有子代中,只要0级的:
TM1FILTERBYLEVEL(DESCENDANTS([维度].[父项1]),0)
1.4 过滤去除部分元素 except
维度的所有成员,排除元素1:
except([维度].members,{[维度].[元素1]})
父项1下的所有子代中,只要0级的,且过滤掉元素1:
except(TM1FILTERBYLEVEL(DESCENDANTS([维度].[父项1]),0),{[维度].[元素1]})
1.5 按属性过滤保留 FILTER
维度的所有成员,保留属性【属性1】=空的:
{FILTER( {[维度].members}, [维度].[属性1] = "")}
维度的所有成员,结合except去除属性【属性1】=空的:
except([维度].members,{FILTER( {[维度].members}, [维度].[属性1] = "")})
1.6 多个集合合并 union
union(expression1,expression2):
union({[维度].[属性1]},{[维度].[属性2]})
还有更简单的方式:
{expression1,expression2,expression3..}
2 排序 order
2.1 按属性值排序:
比如按【属性1】属性排序
order([维度].members,[维度].[属性1],bdesc)
order([维度].members,[维度].[属性1],basc)
2.2 按值排序:
(如果是【维度1】维度,那么在cube排序中列示的维度是除了这个维度的其他维度具体元素)
{ORDER(
{ TM1FILTERBYLEVEL(
{DESCENDANTS([维度1].[元素1])}
,0)}
,[cubename].([dim1].[dim1ele1],[dim2].[dim2ele1],[dim3].[dim3ele1],[dim4].[dim4ele1]), BDESC)
}
2.3 取前n TOPCOUNT
函数 | 说明 |
TOPCOUNT | 前n |
BOTTOMCOUNT | 后n |
TOPPERCENT | 前百分之n |
BOTTOMPERCENT | 后百分之n |
用法 :(取前10)
{ TOPCOUNT(
{ TM1FILTERBYLEVEL(
{DESCENDANTS([维度1].[元素1])}
,0)}
,10
, [cubename].([dim1].[dim1ele1],[dim2].[dim2ele1],[dim3].[dim3ele1],[dim4].[dim4ele1])) }