Tableau 10.0中为DOB字段添加降序行号的问题求助
嘿,我来帮你搞定Tableau 10.0里按DOB降序生成行号的问题!你之前用的方法没生效,大概率是窗口函数的分区/排序逻辑没弄对,或者视图的维度排序没设置好。下面给你两种针对性的解决方案,对应不同的行号需求:
情况1:相同DOB的行共用同一个行号(排名式)
如果希望出生日期相同的两行显示同一个行号(比如1999/04/02的两行都显示1,1983/05/01的两行显示2),可以创建这样的计算字段:
RANK(MAX([DOB]), 'desc')
- 原理:
RANK()函数会根据DOB的最大值(因为同一DOB的最大值就是自身)进行降序排名,相同DOB的行排名一致。
情况2:连续递增的行号(即使DOB相同)
如果不管DOB是否相同,只要按DOB降序排列后给每行分配连续的数字(比如1999/04/02的两行分别是1、2,1983/05/01的两行是3、4),就用这个计算字段:
ROW_NUMBER() OVER (ORDER BY [DOB] DESC)
- 原理:
ROW_NUMBER()会在整个数据集范围内,严格按照DOB降序的顺序给每行分配唯一的递增数字。
关键操作步骤
- 把所有需要展示的字段(DOB、Status、Policy、StartDate、EndDate)拖到视图的「标记」卡文本区域,或者直接放到行/列上。
- 确保DOB字段是降序排序:右键视图里的DOB字段 → 「排序」→ 选择「降序」。
- 创建上面对应的计算字段,然后把它拖到视图最左侧,作为行号列。
为什么你之前的方法没生效?
INDEX():默认依赖视图的现有排序和分区,如果没手动设置DOB降序,它会按维度的默认顺序生成,且如果分区范围不对(比如按Pane而非Table),就会重复显示1。Window_Count(Countd(DOB), 0,0):这个函数是计算窗口内的唯一DOB数量,不是生成行号,逻辑本身就不对。- Running Total:如果选择的是「Table Down」但视图里的维度拆分了分区(比如多个维度导致Pane分区),或者没按DOB排序,就无法生成正确的连续行号。
内容的提问来源于stack exchange,提问作者Adhitya Sanusi
相关产品推荐
相关产品推荐

