TopN算子和去重算子 Deduplication 的sql写法比较相近,从下图中的蓝色部分可以看出差别。
如果order by 后的字段不为时间属性字段,且sql 中有 rownum <= N 子句,则flink会将其解析为TopN的查询。
如果如果order by 后的字段为时间属性字段,且sql 中有 rowNum = 1子句,则flink会将其解析为Deduplication 的查询。
(官网链接: flink sql中的topN和去重对比)
去重算子dedupilcation 是 TopN的一种特殊情况,相比于TopN算子专门做了优化,性能有比较大的提升。常用于按照主键去重 或者 按照主键保留最新数据的情景。