最近几年,ELT(Extract, Load, Transform)这个词在数据圈里挺火。有些人甚至说,有了ELT,ETL(Extract, Transform, Load)就该退出历史舞台了。作为一个干了十多年ETL的老兵,我觉得有必要说道说道。
先说说这两个概念。ETL是先把数据抽取出来,经过处理转换后再加载到目标系统。ELT则是先把原始数据加载进来,然后在目标系统里做转换。乍一看,ELT似乎更高效,毕竟少了中间环节。
(ETL架构,大部分转换在ETL中完成)
(ELT架构,ETL的转换是在数仓中通过调度平台来实现的)
ELT确实有它的优势。比如说:
- 数据加载快,因为不用预先处理
- 灵活性强,想怎么转换都行
- 充分利用目标系统(通常是数据仓库)的计算能力
但是,这就意味着ETL没用了吗?那可不是。
首先,ETL的应用范围远不止数据仓库。很多人以为ETL就是为了给数仓导数据,其实不然。ETL还经常用作数据总线,在不同的业务系统之间打通数据。比如,把CRM系统的客户数据同步到ERP系统,或者把线上订单数据传到物流系统。这种场景下,ETL的作用无可替代。
其次,并不是所有数据都适合直接加载。有些数据质量差,有些格式复杂,直接丢进去会让后续工作变得一团糟。ETL在数据进入主系统前就能解决这些问题。
再者,很多企业的数据来源五花八门,格式各异。ETL可以在中间层统一处理,让数据仓库专注于分析而不是清洗。
还有就是安全性。ETL可以在数据进入核心系统前就做好脱敏、过滤等工作,降低风险。
值得一提的是,现代的ETL工具其实已经包含了ELT的功能。它们可以根据需要灵活选择在哪个阶段进行转换。这就意味着,使用ETL工具并不等于放弃了ELT的优势。
那么,到底该用哪个?其实要根据具体情况来定:
- 如果是跨系统的数据集成,ETL更合适。
- 如果数据质量高,格式统一,而且后续分析需求变化快,用ELT不错。
- 如果数据来源复杂,质量参差不齐,安全要求高,还是ETL更靠谱。
- 大多数情况下,两种方法一起用效果最好。
总之,ETL和ELT各有所长。ETL不仅仅是为了数据仓库,它在企业数据集成中扮演着重要角色。同时,很多ETL工具已经能够灵活地支持ELT模式。明白了它们的特点,才能在合适的地方用合适的工具。别被新概念忽悠了,关键是解决实际问题。
选择数据处理方案时,要考虑你的具体需求:是简单的数据仓库加载,还是复杂的跨系统集成?是否需要严格的数据质量控制?系统间的实时性要求如何?回答这些问题,才能找到最适合你的解决方
典型ETL和ELT工具列表
ETL推荐:Kettle、ETLCloud、Talend、Informatica、Easymorph等;
ELT推荐:DataX、Airbyte、Airflow、DataHavo、Fivetran等;