当我们使用Qlikview straight table来表现数据时,经常会遇到有很多的维度列或表达式列需要在表中表现出来,往往超出了屏幕的宽度而需要拖动滚动条,非常不方便。而实际上,并不是所有的列对于用户来说都是有意义的,甚至在不同的时期用户只关心其中某些列内的数据。但是,为了满足所有用户的需求,我们有时需要让所有的列对用户有效。如下图,
我们如何能让用户方便快捷的选择自己关注的列呢?答案是Dynamic Dimension。
1. 首先,我们先要对应这些维度(列)创建一个inline table,用以包括这些动态列的列名如下,
首先要确保这个inline table中的字段名(SO_DIMENSIONS)不会和你的其它数据模型相关联,其次要保证其中的数据名字不会相互包含,这对于我们后面做显示判断相当重要。
2. 使用listbox展示这个列明表,其中使用多选模式。下图左边的列表就是用来用户选择显示列的列表。
3. 接下来我们开始配置动态列,使数据表中的列和上边建立的list相关联
首先打开straight table的属性,选择要配置的维度列,如下图,
在Enable Conditional前面打钩,并编辑条件公式,
我来解释一下上图中的公式,首先我们用GetSelectedCount函数去判断列名那个字段是否有值被选,如果有值被选,我们用接下来的公式判断当前我们期望的列名是否被选择了。之所以要首先判断一下该字段是否被选择,是因为当一个字段如SO_DIMENSIONS没有任何值被选择时Concat(SO_DIMENSIONS,'|')返回所有选项的连接组合,这样所有的动态列都会被显示。
4. 这样我们就大功告成了,看一下成果吧