TM1常用动态子集公式总结

概述

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])) }



 

上一篇: 没有了