环境:BIEE 11G 11.1.1.7.
背景: 有列A,其值为A1\A2\A3\空值
要求:在列提示器A中添加列值B,若选择B的时候代表除了A1外的所有值,希望选择B+A1达到和选择所有值一样的目的。
测试1:
1、在提示器1中放置列A,列公式为列A拼空字符串,设置可以多选,赋值给变量PVA,设置列A的选项列表为SQL结果,使用union结果集拼B上去
select 'B' from Subject area
union all
select A from Subject area
2、放隐藏提示器2,放置列A,设置可以多选,设置表示变量PVB,设置默认选择为SQL列表,
select A from Subject area
where case when position('B','@{PVA}{the variable has no value}')>0 then ifnull(A,'A1') else 'A1' end <> 'A1'
or A in (@{PVA}['@']{'the variable has no value'})
3、分析展示列A,提示器接列A
结果:
提示器1选择A1,分析展示A1
提示器1选择A1\A3,分析展示A1\A3
提示器1选择B ,分析展示A2\A3,空值去哪里去了?
把提示器2取消隐藏,观察值传递情况,发现提示器2的列A已经按要求勾选了空值,那空值传递去哪里去了?
拉PVA\PVB\过滤器在分析上展示, 可以看到PVA的值为B,PVB的值为A2,A3,*)nqgtn(* ,但过滤器仅仅传递过来为列A等于A2,A3,空值不见了。
点击提示器2的提交按钮,可以看到PVA的值为B,PVB的值为A2,A3,*)nqgtn(* ,但过滤器传递过来的为列A等于A2,A3 or 列A 为空值。
隐藏提示的默认多选若包含空值的时候。空值传递遗失。
那么若直接提示器默认值包含空值,是否会有传递丢失的情况发生呢?
测试2:
1、在提示器1中放置列A,默认选择空值和A3,可以多选
2、在分析中显示列A,接过滤器A
结果:
仪表盘上分析正常显示列A为空值和A3,提示器1正常改变选项值,分析可以正常对应变化。
说明正常情况下的提示器空值传递不会丢失
隐藏提示器或者说第2个提示器的空值被传递丢失了。