Spotfire中相同Rowkey下重复Production字段的排序实现咨询
问题根因
你之前使用的DenseRank表达式仅将Production作为唯一排序列,同一个Rowkey分组下所有Production值相同的记录会得到完全相同的排名,无法区分重复项,因此达不到筛选保留唯一记录的效果。
可用解决方案
方案1:使用RowNumber函数(最直观易维护)
直接通过开窗函数按Rowkey分组,组内排序后分配唯一行号,后续过滤行号=1的记录即可实现去重:
RowNumber() OVER (Partition By [Rowkey] Order By [Production] ASC, [RowId] ASC)
说明:
Partition By [Rowkey]标识按Rowkey拆分计算分组Order By [Production] ASC指定组内优先按Production升序排序- 末尾补充的
[RowId] ASC是为了给Production相同的记录指定兜底排序规则,保证相同Production的记录也能拿到唯一序号;如果你有其他优先级更高的排序规则(比如按创建时间、流水号排序),可以替换这部分内容
方案2:修正DenseRank写法
如果坚持使用DenseRank,需要补充第二排序列保证相同Production的记录排名唯一:
DenseRank([Production], [RowId], "ASC", [Rowkey], "ties.method=first")
后续操作
两种方案计算得到的序号列,只要筛选值为1的记录,即可实现同一个Rowkey下每个Production仅保留一条的需求。
内容的提问来源于stack exchange,提问作者DunderMifflinThisIsPam
相关产品推荐
相关产品推荐

