ETL更新数据方式总结

浏览: 1639

针对不同的需求,对表的更新方式也不同,总结一些日常更新方式

下面的联合主键是指,业务表的维度key值是通过其他字段去维表获取的,key在维表属于记录缓慢变化的唯一key值


小数据量表

1->对于小数据量表,可以采用先Truncate表,然后Insert的方式更新数据   

     实现场景:需要和来源表数据完全保持一致

     优点:实现简单

     缺点:不会存储历史数据,和来源表完全一致

Clipboard Image.png


2->对于需要存储缓慢变化的,可以参考如下文章实现,https://ask.hellobi.com/blog/Zeehom/3156

      原理是拉链表的思路,通过目标表的来源sql生成的数据和目标表对比     

     实现场景:需要存储数据缓慢变化

     优点:会存储历史数据,采用拉链表思路解决问题,可以记录数据的变化过程

     缺点:实现麻烦

Clipboard Image.png


大数据量表

1->增量更新,对昨天和历史修改数据更新

    实现场景:目标表不记录历史数据删除,只记录历史数据变化,联合主键都是从来源stage生成的或者不会发生变动

   优点:实现简单,更新效率高

   缺点:联合主键不能关联其他Stage生成,不然,如果联合主键发生变化,无法对历史变化数据更新(只会插入)

Clipboard Image.png


 2->假增量更新,也叫回算历史数据,先删除回算时间(一般是业务时间)范围内的数据,然后再插入

       实现场景:历史数据,可能会删除,修改,需要目标表保持同步,对业务表记录历史数据要求不高

       优点:可以回算到历史数据的修改删除动作

       缺点:这个记录只能记录回算时间范围内的业务数据变化;

                 如果目标表有联合主键key从其他Stage来,那么回算时间范围内的联合主键都会刷新成最新key值

 

     

      

推荐 2
本文由 楚天歌 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册