1

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

ID 胜利
1 错误的
1 错误的
1 真的
2 错误的
2 错误的
2 真的
3 错误的
3 错误的
3 错误的

我正在尝试计算Victoryper的数量Id,所以如果有一行 where Victoryis TRUE,那么它应该被认为是胜利。

我试图使用一个基本的计算字段,我认为这可以解决问题。然而,它认为胜利是TRUE正确的,但胜利FALSE包括任何Id存在的地方FALSE

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

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

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

Tableau 可视化

我尝试了许多变化,但似乎无法获得预期的结果。

我正在使用 Tableau 2020.4。

编辑

我遇到了两种不同的解决方案来解决我的问题,我附上了下面的截图。注意Victory替换为WINId替换为Row Id,但示例应该清楚。

解决方案 1

解决方案 1

解决方案 2

解决方案 2

4

1 回答 1

1

首先,确保您了解 COUNT([Some Column]) 的行为方式。它不返回某列中为 TRUE 的记录数,或某列中为 1 的记录数。它返回 [Some Column] 有值的记录数,任何值。换句话说,它返回具有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 计算,您就拥有更大的灵活性 - 通常还有更好的性能。

于 2021-05-12T22:21:29.907 回答