使用 LOD 计算 Tableau 中的最大布尔值

Counting max boolean in Tableau using LOD

我有一些数据如下所示,其中相同的 Id 在多行中重复,但 Victory 值不同。

Id Victory
1 FALSE
1 FALSE
1 TRUE
2 FALSE
2 FALSE
2 TRUE
3 FALSE
3 FALSE
3 FALSE

我正在尝试计算每个 IdVictory 的数量,所以如果有一行 VictoryTRUE,那么它应该被认为是一个胜利.

我曾尝试使用基本的计算字段,我认为它可以解决问题。但是,它将胜利视为 TRUE 正确,但胜利 FALSE 包括 FALSE 存在的任何 Id

换句话说,上述数据将计数 3x FALSE 和 2x TRUE,使用以下计算字段:

COUNT ( { FIXED [Id]: MAX([Victory]) } )

这是我得到的可视化效果,我希望 FALSE 的计数仅为 1,但实际上是 3。

我尝试了多种变体,但似乎无法获得想要的结果。

我正在使用 Tableau 2020.4。

编辑

对于我的问题,我遇到了两种不同的解决方案,我附上了下面的屏幕截图。注意Victory换成WINId换成Row Id,但是例子应该清楚了。

解决方案 1

解决方案 2

首先,确保您了解 COUNT([Some Column]) 的行为方式。它不会 return 在某些列中具有 TRUE 的记录数,或在某些列中具有 1 的记录数。它 returns [Some Column] 具有值的记录数,任何值都可以。换句话说,它 returns 具有 NON-NULL 值的记录数。

这就是您获得高于预期结果的原因。您期望 COUNT 以某种方式只计算 Victory 具有特定值的记录,在您的情况下为 TRUE 。就 COUNT() 而言,TRUE 和 FALSE 是等价的。 COUNT() 只关心是否有值——而不是 null。

考虑到这条重要的评论,我建议不要在晚上使用 COUNT() 来处理这种情况。表达式 SUM(INT([Victory])) 将告诉您有多少行的字段 Victory 的值为 True。该表达式有效,因为类型转换函数 INT() 将 TRUE 转换为 1,将 FALSE 转换为 0。

如果必须,您可以将该表达式包装在 LOD 计算中,或者创建定义为 INT([Victory]) 的计算字段测量值。将该字段放在某个架子上,聚合函数默认为 SUM(),然后将 ID 放在另一个架子上,您就会得到答案。

仅在实际需要时才使用 LOD。在不使用 LOD 计算的情况下,您可以获得更大的灵活性 - 通常还有更好的性能。