我在QlikView中有一个数据透视表,它有一个维度和一个表达式.维度是一个包含5个可能值的列:'a','b','c','d','e'.
有没有办法将值限制为'a','b'和'c'?
我更愿意使用条件从图表属性强制执行此操作,而不是在可能的情况下从列表框中选择值.
非常感谢,I_saw_drones!我有一个问题.我根据类别定义了不同的表达式,如下所示:
IF( ([Category]) = 'A' , COUNT( {<[field1] = {'x','y'} >} [field2]), IF ([Category]) = 'B' , SUM( {<[field3] = {'z'} >} [field4]), IF (Category='C', ..., 0)))
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我会在哪里添加$<Category={'A','B','C'}?到目前为止,我的表达没有帮助,因为虽然我告诉QV对每个类别使用不同的公式/计算,但整体类别(所有5个值)代表维度.
一种可能的方法是使用QlikView的Set Analysis创建一个只汇总所需值的表达式.
对于这个例子,我有一个非常简单的加载脚本:
LOAD * INLINE [
Category, Value
A, 1
B, 2
C, 3
D, 4
E, 5
];
Run Code Online (Sandbox Code Playgroud)
然后,我使用单个表达式设置以下数据透视表图表,该表达式仅对值进行求和:

我们需要做的是修改表达式,使它只对Category字段中的A,B和C求和.
如果我然后使用QlikView的Set Analysis将表达式修改为以下内容:
=sum({$<Category={A,B,C}>} Value)
Run Code Online (Sandbox Code Playgroud)
然后我实现了我想要的结果:

然后,这限制了我的数据透视表图表只显示这三个值,Category而不必在列表框中进行选择.此表达式的形式还允许同时过滤其他维度(即选择"加起来"),所以我可以说,过滤国家维度,我仍然会应用我对类别的限制.
这是如何工作的
让我们分开表达:
=sum({$<Category={A,B,C}>} Value)
Run Code Online (Sandbox Code Playgroud)
在这里你可以识别我们之前的原始形式(sum(Value)),但有一个修改.该部分{$<Category={A,B,C}>}是Set Analysis部分,具有以下格式:{set_identifier<set_modifier>}.回到我们原来的表达:
{:Set Analysis表达式始终以a开头{.$:Set Identifier:此符号表示QlikView文档中的当前选择.这意味着任何后续限制都将应用于现有选择之上.1也可以使用,它代表文档中的完整数据集,与选择无关.<:开始设置修饰符.Category={A,B,C}:我们希望对其进行限制的维度.所需的值包含在花括号中,在这种情况下,它们一起进行OR运算.>:设置修饰符的结尾.}:结束分析表达式.Set Analysis可能非常复杂,我只是在这里略读,我肯定会建议在已安装的帮助文件和参考手册(PDF)中检查QlikView主题"Set Analysis".
最后,QlikView中的Set Analysis非常强大,但应该谨慎使用,因为它可能会导致一些性能问题.在这种情况下,因为这是一个相当简单的表达,性能应该是合理的.