Qlikview Max Aggr Value

时间:2017-02-14 02:38:50

标签: max aggregate qlikview

我试图用不同的总和(持续时间)从6台不同的机器中提供最大总和(持续时间)值: 机器1:200 机器2:300 机器3:400 机器4:500 机器5:600 机器6:700

当我使用时:     Max(总aggr(Sum(Duration),MachineID))这是结果:

机器1:700 机器2:700 机器3:700 机器4:700 机器5:700 机器6:700

如果我使用     马克斯(汇聚(总和(持续时间),机号)) 和以前一样但没有"总计",我明白了:

机器1:200 机器2:300 机器3:400 机器4:500 机器5:600 机器6:700

我想要的结果是只显示一个最大值的图表: 机器6:700

你能帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:2)

在Qlik中,我认为实现这一目标的唯一方法是使用计算尺寸。我们的想法是设置一个仅在满足条件时显示值的维度。在您的情况下,这种情况是机器的持续时间是所有机器的最大值。

计算尺寸(缩进以提供评论):

=if(
   //check each machine's sum(duration) against the maximum sum(duration) for all machines
   aggr(sum(Duration),MachineID) >= max(total aggr(sum(Duration),MachineID)), 

   //if >= max, use MachineID as the dimension
   MachineID, 

   //if < max display nothing
   null()
)

取消注释(复制/粘贴)版本:

=if(aggr(sum(Duration),MachineID) >= max(total aggr(sum(Duration),MachineID)), MachineID, null())

这样做的一个关键是确保检查“当值为空时抑制&#39;抑制”。您尺寸上的复选框。这是必需的,因此我们可以强制将此计算的维度用作过滤器。

另一个提示是转到表格/图表的“演示文稿”选项卡,然后选择您创建的计算尺寸,并选中“隐藏列”&#39;单选按钮。由于我们仅将计算维度用作过滤器而不是实际列名称,因此我们可以隐藏它。

完成后,您的尺寸将为:MachineID和上面列出的计算尺寸。您的表达/度量将只是sum(duration)

我发现Qlik在通过表达式输出/值进行过滤方面通常很弱。上面的过程确实有效,但对于许多领域中非常常见的事情,如果在一个图表中有多个这样的计算维度,这就变得势不可挡。

有关使用滑块设置阈值而不是最大值

的类似问题,请参阅here