摘要: 通俗讲retract就是传统数据里面的更新操作,也就是说retract是流式计算场景下对数据更新的处理方式。
什么是retraction(撤回)
通俗讲retract就是传统数据里面的更新操作,也就是说retract是流式计算场景下对数据更新的处理
方式。
首先来看下流场景下的一个词频统计列子。
没有retract会导致最终结果不正确↑:
retract发挥的作用
下面再分享两个双十一期间retract保证数据正确性的业务case:
case1: 菜鸟物流订单统计
同一个订单的商品在运输过程中,因为各种原因,物流公司是有可能从A变成B的。为了统计物流公司承担的订单数目,菜鸟团队使用blink计算的retraction机制进行变key汇总操作。
-- TT source_table 数据如下:
order_id tms_company
0001 中通
0002 中通
0003 圆通
-- SQL代码
create view dwd_table as
select
order_id,
StringLast(tms_company)
from source_table
group by order_id;
create view dws_table as
select
tms_company,
count(distinct order_id) as order_cnt
from dwd_table
group by tms_company
此时结果为:
tms_company order_cnt
中通 2
圆通 1
-----------------------
之后又来了一条新数据 0001的订单 配