Tableau中LOD表达式使用RANK报错,求Top10客户分组计算方法
问题解决方法
报错原因
RANK()属于表计算函数,Tableau官方规则不允许在FIXED等详细级别(LOD)表达式内部嵌套表计算或ATTR函数,这是触发报错的根本原因。
分步操作方案
- 第一步:创建计算字段
2019年6月客户销售额,用于单独核算每个客户对应周期的销售额,不涉及表计算,可正常运行:
{FIXED [Customer Name]: SUM(IF DATETRUNC('month', [Period])=#6/1/2019# THEN [Sales] ELSE 0 END)}
- 第二步:创建分组用的计算字段
客户分层,基于上一步的销售额字段做排名判断:
IF RANK(SUM([2019年6月客户销售额])) <= 10 THEN "Top 10" ELSE "Others" END
- 第三步:调整排名的计算范围
将客户分层字段拖到颜色标记卡后,点击字段右侧的下拉箭头,选择「计算依据」,勾选Customer Name(客户名称),确保排名是对全量客户的6月销售额统一排序,不会被视图内其他维度拆分排序。
效果验证
可以先将Customer Name、2019年6月客户销售额、客户分层三个字段拖到工作表的表格中校验,确认销售额排前10的客户都被标记为Top 10,其余客户标记为Others后,再切换视图为堆叠条形图即可正常使用。
内容的提问来源于stack exchange,提问作者123456
相关产品推荐
相关产品推荐

