按涉及 Qlik Sense 中多个字段的计算度量值过滤

Filtering by a calculated measure involving multiple fields in Qlik Sense

我正在尝试使用计算的度量来过滤我的数据,但它看起来比预期的要难。让我通过一个例子来解释。

我有以下类型的数据,具有两个维度 - 一个是唯一 ID,另一个是类别 - 和四个度量。

Initial table

我的第一步是根据分数对每个元素进行排名,其中排名是在同一类别内进行评估的。因此,我创建了一个新度量:

=aggr(rank(sum(Score1)), Category, UniqueID)

我对所有三个分数都这样做,从而产生了三个新的计算指标。我最终计算出的衡量标准是三个排名的平均值。在示例下方,计算出的感兴趣度量是粗体。请注意,在我的真实世界计算中,我直接计算 'New Measure',而不创建中间列 'RankingScore'。

Data with newly calculated measure

请注意,此措施很棘手,因为它会根据之前的 selections 而变化。比方说,我 select 只有 'Amount' > 1000 的条目。相对排名会发生变化,因此也会发生 'New Measure'.

在我的实际应用程序中,我需要通过 'New Measure' 过滤我的条目,在我对 'Amount' 等字段完成一些先前的 selections 之后。如果它只是一个字段,我通常会创建一个筛选器窗格,我们使用 qsVariable 扩展来设置幻灯片范围,到 select 只有具有 [=37= 的行] 高于设定的阈值。不幸的是,我似乎无法用我计算出的度量来做到这一点。

你会如何解决这个问题?例如,我想知道是否有可能 'convert' 我的新措施到一个实际领域,在所有以前的 select 离子已经完成之后,但这也许是无稽之谈。

提前致谢,很抱歉post!

您可以通过将 "Amount=" 添加到您的集合分析来告诉 QV 忽略您在字段金额中的过滤。

我不知道你的平均计算结果如何,但也许:

(aggr(rank(sum({<Amount=>} Score1)), Category, UniqueID) + 
aggr(rank(sum({<Amount=>} Score2)), Category, UniqueID) + 
aggr(rank(sum({<Amount=>} Score3)), Category, UniqueID)) / 3

如果我理解正确,我相信这个解决方案应该有效:

  1. 为您的滑块创建一个变量:new_measure_slider
  2. 创建一个新的 Sheet 对象 -> Slider/Calendar 对象。
  3. 配置滑块以控制新的 new_measure_slider 变量。
  4. 在您的图表中创建一个计算维度来替换您的 'New Measure' 公式(您所说的是三个排名的平均值)。它应该是这样的条件: =if(aggr([your average formula here], Category, UniqueID) >= new_measure_slider, [Category], null())。 基本上,将您的公式与 new_measure_slider 变量进行比较。如果为 true,则使用 Category(或 UniqueID,无论您需要哪个)作为维度,如果为 false,则 null().
  5. 选中新维度上的 'Suppress When Value is Null' 复选框。这是关键。这是实际过滤图表的内容。
  6. 在图表属性的 Presentation 选项卡中,单击新的计算维度并点击 'Hide Column'。我们不需要看到它,因为我们只是将它用作过滤器。