根据另一列计算出现次数并返回每行最大计数的标签

问题描述

我有两个分类列“工作行业类别”和“财富细分”,我可以使用行中的“工作行业类别”和“财富细分”创建交叉表来计算每个行业的值。

这是我的交叉表目前的样子:

Pic 0

但是我想动态统计每个行业的财富段列,然后返回每个行业最大计数的财富段。

这就是我想要达到的目标:

Pic 1

我尝试过的:

我曾尝试使用 LOD 表达式来获取每个行业的财富细分的最大计数,但返回的是非聚合值,我无法提取相应值的财富细分标签

MAX(
{ FIXED [Job Industry Category],[Wealth Segment] : COUNT([Wealth Segment]) }
)

我也尝试将 IF THEN 语句与 LOD 表达式一起使用,但是,由于 LOD 表达式是一个非聚合值,它会引发错误。这是我试过的:

IF 
{ FIXED [Job Industry Category],[Wealth Segment] : COUNT([Wealth Segment]) } =  MAX(
{ FIXED [Job Industry Category],[Wealth Segment] : COUNT([Wealth Segment]) })
THEN
[Wealth Segment]
END

错误:不能将聚合和非聚合与此函数混合使用

提前致谢。

解决方法

您在这里做了 2-3 件不正确的事情。

1 您的第一个屏幕截图(表格)不是您的数据,而是一个交叉表查询(在 excel 中称为数据透视表),因此您如何想象行或列中的一些额外列。 (第二个屏幕截图)。 tableau 不像 Excel 那样是电子表格,您可以在其中根据自己的方便创建行/列。

2 为什么使用 count(wealth status) 作为聚合。虽然它会给出相同的值,但在这里您需要在 tableau 的早期版本中称为 number of records 的记录/数据计数。

3 您没有考虑两个计数相等的情况。 (这些很可能是相等的,不是吗?)

如果您愿意,您可以完全创建一个新列(当然没有交叉表视图/可视化),您可以获得比其他更多记录的财富类别名称。

我创建了一些随机数据来复制您的问题。我的数据看起来像(有 100 行)(表名是 weal.csv

enter image description here

交叉标签看起来像

enter image description here

使用以下计算创建一个计算字段,例如 Max of Wealth

IF {Fixed [Sector],[Wealth Status]: COUNT([weal.csv])} =
{FIXED [Sector]: MAX({Fixed [Sector],[Wealth Status]: COUNT([weal.csv])})}
then [Wealth Status] END

您可以从该字段中过滤掉 null 值并获得所需的可视化

enter image description here

注意卫生部门的两个结果

我对新 Tableau 用户的真诚建议 - 先不要学习电子表格

祝你好运