如何计算tableau public中值的出现次数和子集的百分比?

时间:2015-11-14 23:43:45

标签: count conditional-statements tableau

我有以下格式的一组数据:

Resp | Q1 | Q2
P1   | 4  | 5
P2   | 1  | 2
P3   | 4  | 3
P4   | 6  | 4

我想显示给出大于3的答案的人数和百分比。所以在这种情况下,输出将是:

Question | Count  | Percent
Q1       |  3     | 75%
Q2       |  2     | 50%

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

虽然这听起来很容易,但有点复杂。 首先,您的数据不是基于行的,因此您必须转动它。

  1. 将数据加载到Tableau中
  2. 在DataSource屏幕中选择第Q1和第Q1列,右键单击它们并选择“Pivot”
  3. 使用答案“答案”命名列(仅为了清楚起见。 你应该得到一个如下所示的表:
  4. enter image description here

    现在你需要创建一个计算字段(我称之为Overthreshold来检查你的情况:

    if [Answer] > 3 then
    [Answer]
    End
    

    此时,您可以使用参数替换3,以防您想轻松更改该条件。 您可以按照以下方式丢弃药丸以获得计数: enter image description here

    现在,如果你想要百分比,它会变得有点复杂,因为你必须确定问题的数量和答案的数量> 3是存储在两个不同列中的信息。

    1. 使用此计算COUNT([Overthreshold]) / AVG({fixed [Question]:count([Answer])})
    2. 创建另一个计算字段
    3. 将创建的药丸放到“文本”字段或列抽屉中,然后查看百分比值
    4. 右键单击该字段并选择Default Properties / Number Format将其设为百分比而不是浮点数
    5. enter image description here

      解释公式的作用: 它需要超过阈值的答案计数,并将其除以每个问题的答案计数。这由公式的fixed部分完成,该部分计算Question列中具有相同值的行。 AVG仅在那里,因为Tableau需要在那里进行聚合。由于问题的每条记录的值都相同,因此您也可以使用MINMAX

      感觉应该有一个更好的解决方案,但现在我想不出一个。

答案 1 :(得分:1)

这是@Alex的正确答案的变体。有些人可能会觉得它稍微简单一些,它至少显示了一些用于计算百分比的Tableau功能。

  1. 从Alexander的答案开始,将 Overtheshold 修改为布尔值字段,定义为Answer > 3
  2. 不是为百分比创建第二个计算字段,而是将Question,Overthreshold和SUM(Number Of Records)拖到viz上,如下所示。 enter image description here
  3. 右键单击SUM(记录数)并选择快速表计算 - >总计百分比
  4. 双击左侧数据窗格中的“记录数”,将其添加到工作表中,这是显示“测量名称”和“测量值”元字段的快捷方式。将度量名称从行移动到列以获取下面的视图,该视图还使用度量名称上的别名来缩短列标题。 enter image description here
  5. 如果您不想显示以下阈值数据,只需右键单击列标题False,然后选择隐藏。 (如果需要,可以通过右键单击“超过阈值”字段取消隐藏)
  6. 最后,为了让它更加美观,你可以将Overthreshold移动到细节架子(你不能从视图中移除它),并调整显示的字段的数字格式以获得结果。 enter image description here
  7. 从技术上讲,Alexander的解决方案使用LOD计算来计算服务器端的百分比,而此解决方案使用Table计算来计算客户端的百分比。两者都很有用,并且可能会产生不同的性能影响。这几乎没有说明你可以用每种方法做的事情;每个都有你需要开始理解的功能和复杂性,以便在更复杂的情况下使用。