BI中ETL处理增量思路
在处理过程中,多个大表关联时通常会有性能问题,所以通常会采用增量方式,那在增量处理时我们需要考虑哪些呢?
1、若来源表为一个频繁变化的A表与其他几乎无变化的表关联时,这时只需要考虑A表的增量;
(1)A表增量 JOIN 其他表全量,更新目标表;
2、若来源表为相互关联的多个部分A表(变化频繁)、B表(变化频繁),C(变化缓慢),这时我们应该考虑多张表增量;
(1)A表增量 JOIN B表、C表全量,更新目标表;
(2)B表增量 JOIN A表、C表全量,更新目标表;
3、但如果A表和B表关联时使用如max()、sum()/group by聚合函数聚合到大粒度时,要考虑聚合函数带来的增量影响,如以下事例
Select A.合同,A.订单ID,sum(B.订单数量) as 订单数量
from A表 A,B表 B
Where A.订单ID=B.订单ID
Group by A.合同,A.订单ID
例子中我们对订单数量做了聚合,聚合到了订单ID粒度;
若B表中,Orderline1的订单数量变成了20(标红部分)ÿ