Tableau问题:选择Employee filter后无法按部门聚合,需实现薪资与部门均值对比
解决方案:无需Parameter实现员工薪资与部门平均对比
核心思路
用LOD表达式绕过员工过滤器,计算部门整体的平均薪资,再通过仪表盘共享过滤器实现联动,完全不用维护Parameter。
步骤1:创建部门整体平均薪资计算字段
新建计算字段部门整体平均薪资,输入公式:
{FIXED [Department]: AVG([Salary])}
这个表达式会忽略任何员工级别的过滤器,直接计算每个部门所有员工的薪资平均值,完美解决“选单个员工时仍显示部门整体平均”的需求。
步骤2:制作两个工作表
- 员工个人薪资表:
拖Employee到行,Salary到列;添加Employee过滤器(后续要共享给仪表盘)。 - 部门平均薪资表:
拖Department到行,部门整体平均薪资到列。不需要额外加过滤器,后续靠仪表盘的过滤器联动自动匹配选中员工的部门。
步骤3:仪表盘联动设置
把两个工作表拖入同一个仪表盘,找到Employee过滤器,设置为应用于所有工作表。
现在测试:选Jessica时,个人薪资表显示1000,部门平均表自动显示Marketing的1200;选Robert时,对应显示2800和IT的2460,完全符合需求。
(可选)Parameter方法(不推荐,仅作补充)
如果一定要用Parameter,按以下步骤操作:
- 新建参数
选择员工,类型选字符串,允许值选“从字段中添加”,导入所有Employee值,开启参数控件。 - 新建计算字段
选中员工薪资:
用MAX()聚合这个字段,就能得到选中员工的薪资。IF [Employee] = [选择员工] THEN [Salary] END - 新建计算字段
对应部门平均:
再建一个字段{FIXED [Department]: AVG([Salary])}显示部门平均:
同样用MAX()聚合。IF [Employee] = [选择员工] THEN [对应部门平均] END - 分别制作两个工作表展示这两个聚合后的字段即可。
注意:每季度新增员工后,需要手动更新Parameter的允许值,这也是为什么不推荐这个方法的原因。
内容的提问来源于stack exchange,提问作者Jessica Yoskovic
相关产品推荐
相关产品推荐

