计算流程
进程消费kafka数据,写入到foreign table T,通过materialized view A实时计算聚合结果。
问题
给消费者进程配置错了group_id,导致一段时间内的数据重复消费,需要纠正这段时间内偏大的结果。
解决步骤
- 根据时间过滤出重复消费的数据。
- 根据这部分数据计算出聚合写过,写入table B中,B的表结构与A_mrel相同
- 将A与B进行inner join,并将A中对应的值减去B中对应的值。
结果
校正前的A
hour | id | num |
---|---|---|
01 | a | 110 |
02 | a | 120 |
03 | a | 130 |
01 | b | 140 |
02 | b | 150 |
03 | b | 160 |
B
hour | id | num |
---|---|---|
01 | a | 10 |
02 | a | 20 |
03 | a | 30 |
01 | b | 40 |
02 | b | 50 |
03 | b | 60 |
执行的sql
update A_mrel as A
set num = (A.num - B.num)
from captcha_detail_tmp as B
where A.hour = B.hour
and A.id = B.id;
校正后的A
hour | id | num |
---|---|---|
01 | a | 100 |
02 | a | 100 |
03 | a | 100 |
01 | b | 100 |
02 | b | 100 |
03 | b | 100 |