Tableau混合数据

时间:2018-08-28 16:29:24

标签: tableau

enter image description here我受命建立一个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数据库输入,这是否有助于解决方案。

2 个答案:

答案 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}

here

现在是扩展部分,您正在考虑以下列表,其中要计算Lemon,Apple和其他设备的ID。由于不允许对ID进行重复计数,因此将按照顺序进行分类。 (没有LOD时,这种优先顺序会令人头疼)

enter image description here

现在,您可以按以下方式更改计算方式:

{FIXED [Id]:IF MAX([Fruit]='lemon') THEN 'Lemon' 
            ELSEIF MAX([Fruit]='apple') THEN 'Apple' 
            ELSE 'No Lemon or Apple' END}

现在,您的可视化会自动更改为包括新类别。可以扩展到任意数量的水果。

enter image description here