我受命建立一个Tableau工作表,该工作表包含数据计数(最终创建百分比),其中人为设计的传入数据如下所示。
id fruit
1 apple
1 orange
1 lemon
2 apple
2 orange
3 apple
3 orange
4 lemon
4 orange
工作表应类似于以下内容:
Count of ids
2 Lemons
2 No lemons
我只使用Tableau大约4个小时,这可行吗?谁能指出我正确的方向?
数据以一种我可以控制的格式从SQL Server数据库输入,这是否有助于解决方案。
答案 0 :(得分:2)
这是一套很好的用途。
在左侧栏中的数据窗格中,右键单击“ ID”字段,然后创建一个名为“包含至少一个柠檬的ID”的集合(或使用较短的不太精确的名称)
在“集合定义”对话框面板中,通过从“常规”选项卡中选择“全部使用”来定义集合,然后在“条件”选项卡上,通过公式max([Fruit]="lemon")
来定义条件
有许多种方法来考虑一个集合,但是最抽象的是满足条件的Ids的数学集合。请记住,每个ID都有许多数据行,因此条件是许多数据行的函数,并使用聚合函数MAX()。对于布尔值,将True视为大于False,因此,如果至少一个数据行满足条件,则MAX()将返回True。相反,只有所有(非空)数据行都满足条件时,MIN()才为True。
一旦您有一个将ID分为柠檬味ID和其他ID的集合,则可以通过多种方式使用该集合-在计算字段,过滤器中结合其他集合以创建新集合,当然货架上进行可视化。
要获得类似您的问题的结果,可以将新集合放在行架子上,并将CNTD(ID)放在文本架子或列架子上。请确保您了解为什么在这里需要计数为奇数(CNTD)而不是SUM([记录数])。
顺便说一句,LOD计算{ fixed [Id] : max([Fruit]="lemon") }
实际上是相同的解决方案。
答案 1 :(得分:2)
Alex基于集的解决方案在这种情况下非常有用,但是我想表明,如果您需要扩展解决方案以包含更多类别,则LOD可以更加灵活。 对于当前方案,使用以下公式创建计算并使用COUNTD(Id)
创建文本表{FIXED [Id]:IF MAX([Fruit]='lemon') THEN 'Lemon' ELSE 'No Lemon' END}
现在是扩展部分,您正在考虑以下列表,其中要计算Lemon,Apple和其他设备的ID。由于不允许对ID进行重复计数,因此将按照顺序进行分类。 (没有LOD时,这种优先顺序会令人头疼)
现在,您可以按以下方式更改计算方式:
{FIXED [Id]:IF MAX([Fruit]='lemon') THEN 'Lemon'
ELSEIF MAX([Fruit]='apple') THEN 'Apple'
ELSE 'No Lemon or Apple' END}
现在,您的可视化会自动更改为包括新类别。可以扩展到任意数量的水果。