知识卡片
去重与Top-N是同一种排序截断模式
内容
流式SQL里的去重和Top-N查询用的是同一个底层机制:先用ROW_NUMBER()按某个分组Key做PARTITION BY,再按某个排序字段(比如时间戳或数值)做ORDER BY,为每个分组内的行标出连续序号,最后用WHERE过滤序号范围。当过滤条件是row_num <= N时就是标准的Top-N查询;当过滤条件收紧到row_num = 1时,效果就是”每个分组只保留排序最靠前的一条”,也就是去重。这说明去重不是一个需要单独实现的特殊功能,而是Top-N在N等于1时的特例——理解了排序截断这一个通用模式,就同时掌握了两个表面上看起来不相关的查询需求,不需要分别记两套逻辑。
参考来源
《Flink入门与实战》第7章《Table API和SQL》