Tableau 混合数据
Tableau Mixed Data
我的任务是设置数据计数的 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 服务器数据库,格式我可以控制,如果这有助于解决问题。
这套用起来不错
在左侧边栏的数据窗格中,右键单击 Id 字段并创建一个名为 "Ids that contain at least one lemon" 的集合(或使用更短、不太精确的名称)
在集定义对话框面板中,通过从“常规”选项卡中选择 "Use all" 来定义集,然后在“条件”选项卡上,通过公式 max([Fruit]="lemon")
定义条件
集合有多种理解方式,但最抽象的就是满足条件的 Id 的数学集合。记住每个Id都有很多数据行,所以条件是many个数据行的函数,使用了聚合函数MAX()。对于布尔值,True 被视为大于 False,因此如果至少有一个数据行满足条件,则 MAX() 将为 return True。相比之下,仅当所有(非空)数据行满足条件时,MIN() 才为真。
一旦你有了一个将你的 ID 分成柠檬味 ID 和其他 ID 的集合,那么你就可以以多种方式使用该集合 - 在计算字段中,在过滤器中,与其他集合组合以创建新集合,以及上架课程以进行可视化。
要获得您的问题所寻求的结果,您可以将新集放在行架上,并将 CNTD(ID) 放在文本架或列架上。确保您了解为什么在这里需要 count distinct (CNTD) 而不是 SUM([Number of Records])。
顺便说一句,LOD 计算 { fixed [Id] : max([Fruit]="lemon") }
实际上是相同的解决方案。
Alex 基于集的解决方案非常适合这种情况,但我想表明,如果您需要扩展解决方案以包含更多类别,LOD 可以更加灵活。
对于当前情况,使用以下公式创建计算并使用 COUNTD(Id)
创建文本 table
{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}
现在您的可视化会自动更改以包含新类别。这可以扩展到任意数量的水果。
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 服务器数据库,格式我可以控制,如果这有助于解决问题。
这套用起来不错
在左侧边栏的数据窗格中,右键单击 Id 字段并创建一个名为 "Ids that contain at least one lemon" 的集合(或使用更短、不太精确的名称)
在集定义对话框面板中,通过从“常规”选项卡中选择 "Use all" 来定义集,然后在“条件”选项卡上,通过公式 max([Fruit]="lemon")
集合有多种理解方式,但最抽象的就是满足条件的 Id 的数学集合。记住每个Id都有很多数据行,所以条件是many个数据行的函数,使用了聚合函数MAX()。对于布尔值,True 被视为大于 False,因此如果至少有一个数据行满足条件,则 MAX() 将为 return True。相比之下,仅当所有(非空)数据行满足条件时,MIN() 才为真。
一旦你有了一个将你的 ID 分成柠檬味 ID 和其他 ID 的集合,那么你就可以以多种方式使用该集合 - 在计算字段中,在过滤器中,与其他集合组合以创建新集合,以及上架课程以进行可视化。
要获得您的问题所寻求的结果,您可以将新集放在行架上,并将 CNTD(ID) 放在文本架或列架上。确保您了解为什么在这里需要 count distinct (CNTD) 而不是 SUM([Number of Records])。
顺便说一句,LOD 计算 { fixed [Id] : max([Fruit]="lemon") }
实际上是相同的解决方案。
Alex 基于集的解决方案非常适合这种情况,但我想表明,如果您需要扩展解决方案以包含更多类别,LOD 可以更加灵活。 对于当前情况,使用以下公式创建计算并使用 COUNTD(Id)
创建文本 table{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}
现在您的可视化会自动更改以包含新类别。这可以扩展到任意数量的水果。