业务tidb表通过ticdc实时同步变更数据到kafka topic,我开发flink实时作业消费kafka处理后投递到另一个kafka 
topic,再由doris创建routine load任务消费sink kafka 
topic写入到doris聚合模型表,做一些count/sum/min/max统计。
针对上游mysql表的更新要拆分出两条append only (+I) 
数据(通过扩展的cdc数据源来实现),update_before数据要将除聚合key以外的指标值都乘以 -1 
表示扣减掉,而update_after数据正常输入即可,将这两部分数据union 
all起来后根据业务主键例如order_no(tidb表用的是自增id做为主键)进行keyBy再根据更新时间进行去重。
使用的是select * from ( select *, row_number() over (partition by order_no order by 
event_time) as rownum from tbl ) where rownum = 1 语法。
但是我发现这样出来的结果会产生回撤流,例如
+I update_before -1
-D update_before -1
+I  update_after +1

请问为什么append only数据源去重也会产生回撤数据?有没有办法不产生回撤数据?或者有什么办法可以过滤掉回撤数据再发到下游kafka? 

回复