【问题标题】:Limit dimension values displayed in QlikView Pivot Table Chart限制 QlikView Pivot Table Chart 中显示的维度值
【发布时间】:2014-10-08 14:56:27
【问题描述】:

我在 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))) 

在这种情况下,我应该在哪里添加 $&lt;Category={'A','B','C'} ?到目前为止,我的表达没有帮助,因为虽然我告诉 QV 对每个类别使用不同的公式/计算,但总体类别(所有 5 个值)代表维度。

【问题讨论】:

    标签: qlikview


    【解决方案1】:

    执行此操作的一种可能方法是使用 QlikView 的 Set Analysis 创建一个表达式,该表达式仅对所需值求和。

    对于这个例子,我有一个非常简单的加载脚本:

    LOAD * INLINE [
        Category, Value
        A, 1
        B, 2
        C, 3
        D, 4
        E, 5
    ];
    

    然后,我使用一个表达式设置了以下数据透视表,该表达式仅对值求和:

    我们需要做的是修改表达式,使其仅将Category字段中的A、B和C相加。

    如果我随后使用 QlikView 的 Set Analysis 将表达式修改为以下内容:

    =sum({$<Category={A,B,C}>} Value)
    

    然后我达到了我想要的结果:

    然后,这将我的数据透视表限制为仅显示 Category 的这三个值,而无需在列表框中进行选择。此表达式的形式还允许同时过滤其他维度(即选择“加起来”),所以我可以说,过滤国家维度,我对类别的限制仍然适用。

    这是如何工作的

    让我们把表达式分开:

    =sum({$<Category={A,B,C}>} Value)
    

    在这里您可以识别出我们之前的原始表单 (sum(Value)),但经过修改。 {$&lt;Category={A,B,C}&gt;} 部分是集合分析部分,格式如下:{set_identifier&lt;set_modifier&gt;}。回到我们原来的表达方式:

    • {:集分析表达式始终以{ 开头。
    • $:设置标识符:此符号表示 QlikView 文档中的当前选择。这意味着任何后续限制都将应用在现有选择之上。 1 也可以使用,它代表文档中的完整数据集,与选择无关。
    • &lt;:设置修饰符的开始。
    • Category={A,B,C}:我们希望对其进行限制的维度。所需的值包含在花括号中,在这种情况下,它们是 ORed 在一起的。
    • &gt;:设置修饰符结束。
    • }:集合分析表达式结束。

    Set Analysis 可能相当复杂,我在这里只触及了皮毛,我绝对建议您查看已安装的帮助文件和参考手册 (PDF) 中的 QlikView 主题“Set Analysis”。

    最后,QlikView 中的集合分析功能非常强大,但应谨慎使用,因为它可能会导致一些性能问题。在这种情况下,由于这是一个相当简单的表达式,因此性能应该是合理的。

    【讨论】:

    • 非常感谢您,I_saw_drones!我有一个问题。我根据类别定义了不同的表达式,如下所示: IF( ([Category]) = 'A' , COUNT( {} [field2]), IF ([Category]) = 'B' , SUM( {} [field4]), IF (Category='C', ..., 0))) 在这种情况下,我将在哪里添加 $
    • @user3652812:您能否使用此评论的内容更新您的问题(标记为更新)以提高可读性。谢谢。
    • 我要补充一点,集合分析确实会带来性能警告,但前提是数据云非常复杂,或者服务器确实需要比实际大一点。我已经看到这种情况发生,但仅限于具有过于复杂的数据云或超过 1.5 亿个寄存器的模型。 ;)
    【解决方案2】:

    哇!一年后,但你正在寻找的是接近这个:

    转到尺寸表,然后选择Category Dimension,然后单击Edit Dimesnion 按钮

    你可以使用这样的东西:

    = If(Match(Category, 'a', 'b', 'c'), Category, Null())
    

    这将使对象仅显示 a bc 类别,以及 Null 值的一行。

    最不重要的是您检查了维度表上的“当为 null 时抑制值”选项。

    你在身边

    【讨论】:

    • 应尽可能避免计算维度,因为它们会减慢查询速度 - 最好在加载中使用此脚本并创建一个新字段用作维度
    • 嗯,这是一个非常轻的计算尺寸,所以我会在丢弃它之前尝试一下...如果模型不是太大,它应该可以正常工作
    【解决方案3】:

    只是想到了另一种解决方案,它可能对寻找这个的人仍然有用。

    如何创建一个包含您想要的类别的书签,然后将表达式设置为仅在该书签的上下文中进行评估?

    (稍后将对此进行扩展,但看看集合分析如何受书签影响)

    【讨论】:

    • 不错的选项,当您想对每个图表应用相同的选择(过滤器)时,它会起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    相关资源
    最近更新 更多