ETL如何实现增量更新
创建于 2022-11-01 / 最近更新于 2023-09-05 / 4132
字体:
[默认]
[大]
[更大]
背景
当前BI的Smart-ETL无法直接实现数据集的增量更新,每次ETL的运行就是全量的数据覆盖,当数据量越来越大的时候,每个ETL的性能就越来越差,系统整体运行的ETL时长也越来越长,如果能使用BI的Smart-ETL实现数据的增量更新问题就可以解决了。
解决方案
本方案历史数据是以月为周期、存量数据ETL每月2号晚上6点更新本月前所有数据。增量数据ETL每日凌晨更新当月数据,其中1、2号更新本月和上月数据、3号后只更新本月数据。
ETL整体分层设计
DW层ETL分为DW-样例表(本月前)、DW-样例表(本月),因为DW层不被卡片使用所以可以不用做合并数据集。
2、DM层ETL分为DM-样例表(本月前)、DM-样例表(注:这个ETL把增量DM和本月前DM数据集合并了)
ETL详细设计
1. DW-样例表(本月前)
-- 保证取的数据是本月之前的数据
SELECT * FROM input1 WHERE `创建时间`< DATE_TRUNC('month',CURRENT_DATE())
2. DW-样例表(本月)
-- '-2'保证在1、2号的凌晨的时候上个月的数据还在增量数据集中、因为历史数据集是2号晚上才更新。
SELECT * FROM input1 `创建时间`>= DATE_TRUNC('month',CURRENT_DATE())
3. DM-样例表(本月前)
直接使用DW-样例表(本月前做为DW层数据集、生成对应DM)
4. DM-样例表
本月增量更新的DM和本月前的DM做行拼接合并成完整的DM数据集,可以被业务直接使用
业务价值
通过增量更新,ETL的性能对比全量更新性能提升3~5倍、存量数据量越大、ETL越复杂增量更新性能提升更多。如果以后BI对行拼接的性能有优化的化,性能可以得到进一步提升。
20 人点赞过