如何解决Tableau中MY过滤器缩写后按日期排序失效的问题?
解决Tableau过滤器中年月缩写的排序问题
嗨,我完全懂你的痛点——用月份缩写节省仪表板空间是个很棒的思路,但字符串默认的字母排序确实会把时间顺序搞得一团糟!别担心,有个简单直接的办法能让过滤器里的年月缩写按实际时间顺序排列:
方法:绑定原始日期字段控制排序
你的计算字段 (LEFT(DATENAME('month', [My_Date]), 3) + ' ' + STR(DATEPART('year', [My_Date]))) 本身没问题,但因为它返回的是字符串类型,Tableau默认会按字母顺序排序。我们只需要让这个计算字段的排序逻辑绑定到原始日期字段即可:
- 把你的年月缩写计算字段(比如命名为
Month-Year Abbrev)拖到过滤器面板中 - 右键点击这个过滤器字段,选择「排序」选项
- 在弹出的排序对话框里:
- 排序依据选择「字段」
- 从下拉列表中选中你的原始日期字段
My_Date - 排序方式选择「升序」(从旧到新)或者「降序」(从新到旧)
- 确认设置后,过滤器里的年月缩写就会按照真实的时间顺序排列了!
备选方案(自定义显示进阶版)
如果你需要更灵活的自定义显示效果,也可以修改计算字段,让它包含用于排序的隐藏前缀,再通过自定义显示去掉前缀:
修改后的计算字段代码:
STR(DATEPART('year', [My_Date])) + RIGHT('0' + STR(DATEPART('month', [My_Date])), 2) + '|' + LEFT(DATENAME('month', [My_Date]), 3) + ' ' + STR(DATEPART('year', [My_Date]))
这个字段会生成类似201701|JAN 2017的内容:
- 前面的
201701是用于排序的数字(年份+两位月份),确保时间顺序绝对正确 - 后面的
JAN 2017是你要展示的缩写内容
后续操作步骤:
- 把这个新计算字段拖到过滤器
- 设置排序为「升序」(基于字段本身的字符串顺序,前缀数字会保证时间逻辑正确)
- 右键过滤器选择「编辑过滤器」,在对话框里点击「自定义显示」,把每个选项的前缀(比如
201701|)删掉,只保留JAN 2017这类显示内容
不过第一种方法更简洁高效,推荐优先使用!
内容的提问来源于stack exchange,提问作者Hakan ERDOGAN
相关产品推荐
相关产品推荐

