环境:BIEE 11.1.7...
背景:
项目中有一个需求类似于这样:
一张汇总报表,有3个列选择器A\B\C,当选择不同的列选择器组合的时候需要同一个指标T1下钻到不同的明细报表(A\B\C\A+B\A+C\B+C\A+B+C\ABC全不选);
第一种方法:
用脚本模拟列选择器的效果,用脚本控制不同列选择器的汇总报表展示,不同的汇总报表导航到不同的分析;
该方案弊端就是要用脚本控制报表脚本去根据不同的组合显示不同的汇总,当需求变动的时候需要修改多个汇总分析,维护和修改成本较高;
第二种方法:
利用BIEE同名列传参的原理,在明细仪表盘上放置汇总报表列选择器同名列并设置表示变量,采用中间条件分析根据表示变量长度来判定,利用BIEE的条件区域块功能用来显示不同的明细分析;
该方法仅需要一张汇总报表,8个类似的中间条件分析和8个明细报表即可;少了脚本维护成本,降低了维护门槛。
但该方案进行过程中,在中间条件分析的过程中出了点标题中的小意外。
例如:当判定ABC都不选择的时候,会设定过滤器为:
case when length('@{PV_A}')=0 AND length('@{PV_B}')=0 AND length('@{PV_C}')=0 THEN 1 else 0 end = 1
实际效果中,该条件分析永远测试不成立,后来发现过滤器+字符串函数+表示变量的组合会把表示变量识别为字符串;
后来修改过滤器直接判定变量值,类似为:
case when '@{PV_A}{the variable has no value}'='the variable has no value' AND '@{PV_B}{the variable has no value}'='the variable has no value' AND '@{PV_C}{the variable has no value}'='the variable has no value' THEN 1 else 0 end = 1
至此,中间分析正常运行,汇总分析导航到明细分析正常切换显示;