Qlikview 最大聚合值

Qlikview Max Aggr Value

我正在尝试从具有不同总和(持续时间)的 6 台不同机器中呈现最大总和(持续时间)值: 机器 1:200 机器 2:300 机器 3:400 机器 4:500 机器 5:600 机器 6:700

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

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

如果我用 Max(aggr(Sum(Duration),MachineID)) 和以前一样,但没有 "total",我得到这个:

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

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

你能帮忙吗?谢谢!

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

未注释 (copy/paste) 版本:

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

其中一个关键是确保选中维度上的 'Suppress When Value is Null' 复选框。这是必需的,因此我们可以强制将计算出的维度用作过滤器。

另一个提示是转到 table/chart 和 select 您创建的计算维度的演示选项卡,然后选中 'Hide Column' 单选按钮。由于我们仅将计算维度用作过滤器而不是实际的列名,因此我们可以将其隐藏。

完成后,您的尺寸将为:MachineID 和上面列出的计算尺寸。您的 expression/measure 将只是 sum(duration).

我发现 Qlik 在按表达式过滤方面普遍较弱 output/value。上面的过程确实有效,但是对于在许多领域中非常常见的东西,当你在一个图表中有多个像这样的计算维度时,这会变得难以承受。

有关使用滑块设置阈值而不是最大值的类似问题,请参阅