ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 — 这些变化可能看起来很小,但会产生很大的影响!

ETL 和 ELT 是数据团队引入、转换并最终向利益干系人公开数据的两种主要方式。它们是与现代云数据仓库和 ETL 工具的开发并行发展的流程。

在任一过程中,ETL/ELT 中的字母代表:

  • E:提取,当原始数据从不同的数据源中提取时。这些数据源通常包括后端数据库、营销和电子邮件 CRM、广告平台等。
  • L:加载,当数据加载到中央数据仓库时。
  • T:转换,当原始数据被建模为统一、有意义和标准化的格式时。

这两个过程的分歧在于转换层的时间和位置。简而言之,在 ETL 过程中,原始数据的转换发生在数据仓库之前。在 ELT 流程中,原始数据已丢弃后,数据仓库中会发生转换;在这种方法中,原始数据和转换后的数据都位于数据仓库中。

这不仅仅是语义,转换发生的时间和地点的顺序在数据团队如何存储、治理、标准化、建模和测试数据方面起着至关重要的作用。使用此页面了解这两个过程的不同之处、每个选项的优点和缺点,以及哪种方法最适合您和您的团队。

ETL 与 ELT:高级概述

ETL 和 ELT 之间的主要区别在于转换的时间和位置:它是在数据加载到数据仓库之前还是在存储之后发生。这种转换顺序对以下方面具有相当大的影响:

  • 实施管道所需的技术技能,
  • 支持每个选项所需的产品数量和复杂性,
  • 技能团队雇用的数据团队本身的结构,以及
  • 数据堆栈的准备性和灵活性。

在我们深入了解这些差异的细节之前,让我们清楚地定义什么是 ETL 和 ELT,以及为什么 ELT 已成为分析行业的最新现象。

什么是 ETL?

ETL 或“提取、转换、加载”是首先从数据源中提取数据,对其进行转换,然后将其加载到目标数据仓库的过程。在 ETL 工作流中,许多有意义的数据转换都发生在下游商业智能 (BI) 平台的此主要管道之外。

在许多方面,ETL 工作流可以重命名为 ETLT 工作流,因为相当一部分有意义的数据转换发生在数据管道之外。相同的转换可能发生在 ETL 和 ELT 工作流中,主要区别在于何时(在主 ETL 工作流内部或外部)以及转换数据的位置(ETL 平台/BI 工具/数据仓库)。

什么是 ELT?

提取、加载、转换 (ELT) 是首先从不同数据源提取数据,然后将其加载到目标数据仓库中,最后转换数据的过程。

ELT 已成为如何在现代数据仓库中管理信息流的范例。这代表了以前处理数据的方式的根本转变,当时ETL是大多数公司实施的数据工作流。

从 ETL 过渡到 ELT 意味着您不再需要在将数据初始加载到数据仓库期间捕获转换。相反,您可以加载所有数据,然后在其上构建转换。数据团队报告说,与传统的 ETL 工作流相比,ELT 工作流有几个优点,我们将在下面的部分中介绍这些优势。

ETL 和 ELT 之间的核心区别和相似之处

您可以阅读交替使用 ETL 和 ELT 的其他文章或技术文档。在纸面上,唯一的区别是 T 和 L 出现的顺序。然而,这种简单的字母切换会彻底改变数据在企业系统中存在和流动的方式。

在这两个过程中,来自不同数据源的数据以类似的方式提取。但是,在 ELT 工作流中发生转换之前,数据将直接加载到目标仓库中。现在,原始数据和转换后的数据都可以存在于数据仓库中。在 ELT 工作流中,数据从业者在有机会探索和分析原始数据后,可以灵活地对数据进行建模。ETL 工作流可能更具限制性,因为转换在提取后立即发生。

下面,我们分解了两者之间的其他一些主要区别:

英语 电子离
所需的编程技能 通常几乎不需要代码即可将数据提取并加载到数据仓库中。SQL 是转换背后的主要力量。 通常需要自定义脚本或相当大的数据工程提升,以便在加载之前提取和转换数据。Python,Scala和SQL通常用于转换数据本身。
关注点分离 提取层、加载层和转换层可以由不同的产品显式分离出来。 ETL 过程通常封装在一个产品中。
变换的分布 由于转换是最后发生的,因此建模过程具有更大的灵活性。首先担心将数据放在一个地方,然后您有时间探索数据以了解转换数据的最佳方式。 由于转换发生在将数据加载到目标位置之前,因此团队必须先进行彻底的工作,然后才能确保正确转换数据。大量转换通常发生在 BI 层的下游。
数据团队角色 ELT 工作流使了解 SQL 的数据团队成员能够创建自己的提取和加载管道及转换 ETL 工作流通常需要具有更高技术技能的团队来创建和维护管道

ELT 如何发展现代分析空间

为什么近年来ELT的采用增长如此之快?几个原因:

  • 大量廉价的云存储和现代数据仓库。Redshift 和 Snowflake 等现代数据仓库的创建使得各种规模的团队都可以以更有效的成本存储和扩展他们的数据。这是 ELT 工作流程的巨大推动因素。
  • 开发低代码或无代码数据提取器和加载器。Fivetran 和 Stitch 等需要很少技术专业知识的产品可以从许多数据源中提取数据并将其加载到许多不同的数据仓库中,这有助于降低进入 ELT 工作流程的门槛。数据团队现在可以减轻提取数据和创建复杂转换所需的一些数据工程负担。
  • 一个真正的基于代码、版本控制的转换层,带有 dbt 的开发。在开发dbt之前,没有单一的转换层产品。dbt 帮助数据分析师将软件工程最佳实践(版本控制、CI/CD 和测试)应用于数据转换,最终允许任何了解 SQL 的人参与 ELT 过程。
  • 近年来,ELT层和技术之间的兼容性不断提高。随着提取、加载和转换层的扩展,这些层与云存储紧密集成,ELT 工作流从未如此易于访问。例如,Fivetran 创建和维护 dbt 包,以帮助为它们连接到的数据源编写 dbt 转换。

那么什么是适合您的正确选择?

您已经阅读了本文,反思了当前数据堆栈的胜利和挣扎,并最终提出了一个黄金问题:哪个流程最适合您、您的数据团队和您的业务?

下面,我们分解了您在考虑如何通过数据增强团队和业务能力时应采取的关键考虑因素,以及 ELT/ELT 流程如何影响该方法。

以下内容对您有多重要?

  • 控制数据转换的版本
  • 将原始数据和建模数据存储在统一位置
  • 自动测试和记录数据
  • 使参与数据管道工作的人员民主化 - 您是否希望将数据分析师纳入数据转换的行列,并消除数据工程师对复杂数据管道的责任?
  • 核心业务指标的治理和标准化

如果这些事情对你以及你的数据、团队和业务的健康至关重要,请考虑更多地了解 dbt(鼓励数据从业者体现软件工程最佳实践的工具)如何改变现代分析空间。

ETL 与 ELT的关键区别相关推荐

  1. etl数据抽取工具_数据同步工具ETL、ELT傻傻分不清楚?3分钟看懂两者区别

    什么是数据同步工具(ETL.ELT) 数据同步工具ETL或者ELT的作用是将业务系统的数据经过抽取.清洗转换之后加载到数据仓库的过程,目的是将企业中的分散.零乱.标准不统一的数据整合到一起,为企业的决 ...

  2. ETL和ELT的区别

    0.前言 当你第一次看到这两个词的时候会以为写错了或者ELT是不是其他高大上的概念,但是实质他们两只是顺序调换.虽然表面看只是顺序调换了,但是两者处理数据的方式也是不一样. ETL 是Extract( ...

  3. 一文搞懂ETL和ELT的区别

    在过去的十年,我们对存储和管理数据的方式发生了很大的变化,并从ETL模式逐渐转向ELT,然而,小编认为这并不会是终点:未来极有可能会向EL(T)发展,也就是EL和T进行完全解耦.当然这只是一种猜想.本 ...

  4. 数据仓库、数据整合、ETL、ELT和EII之间的区别?

    在数据仓库领域里,的一个重要概念就是数据整合(data intergration).数据整合它就是把不同数据库中的数据整合到一起,对外提供统一的数据视图. 数据整合最典型的案例就是整合存货数据和订单数 ...

  5. ETL与ELT的区别与联系?

    ETL与ELT的区别与联系 其实数据集成不算一个很新的概念,可能20年前就有数据集成的工具,大家经常会使用Talent, Informatica, Kettle, Data Stage这样一些工具.这 ...

  6. ETL和ELT到底有啥区别???

    前言 昨天群里突然有人问了一个这个问题: 我最早听说 ELT 的时候也楞了一下,只不过简单琢磨了一下就放下了.今天重新听到,其实也没啥感觉. 反正有人也给出了最言简意赅的解释: 只是换个顺序? 然后就 ...

  7. 一学就会一用却废!到底应该用ETL还是ELT?

     技术专家  祁国辉 前 Oracle 云平台事业部电信行业技术总监 [作者介绍]网名"atiger",前 Oracle 云平台事业部电信行业技术总监.拥有超过25年数据库和数据仓 ...

  8. html4与html5效果,浅谈HTML5与HTML4的10个关键区别

    HTML5是HTML标准的下一个版本.越来越多的程序员开始HTML5来构建网站.如果你同时使用HTML4和HTML5的话,你会发现用HTML5从头构建,比从HTML4迁移到HTML5要方便很多.虽然H ...

  9. 内存和外存的主要区别_内存与外存的关键区别有哪些?

    易失性VS非易失性.内存,例如随机存取内存(RAM),是具有易失性的.这意味着当系统断电时,数据就会丢失.与之相反,外部存储是非易失性的,因此即使没有电源,它也能保存数据. 性能和容量.在大多数情况下 ...

最新文章

  1. 配置交换机etherchannel
  2. c++ socket启动网卡接口
  3. gcc优化的简单说明
  4. 数跑科技联合阿里云创造基于云原生的无边界数字新体验
  5. android长截屏代码,android长截屏原理及实现代码
  6. 洛谷-省选斗兽场-动态规划1
  7. 从客户端检测到有潜在危险的Request.Form 值
  8. POI Excel解析
  9. 《深入理解OSGi:Equinox原理、应用与最佳实践》一3.2 Bundle状态及转换
  10. oracle更换年,Oracle数据库更换服务器10分钟切换方案
  11. 数据库概念整理(粗略)
  12. ios 图像坐标系_[译] iOS 开源图形库 Core Plot 使用教程
  13. MPDA:基于Domain Adaption的V2X协同感知(3D目标检测)
  14. 数据库总结作业数据库设计七
  15. win10系统启用老版windows照片查看器
  16. 电路图里面的NS是什么意思
  17. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xae in position 16: illegal multibyte sequence
  18. ZZULIOJ1025
  19. 深入理解Java虚拟机(Java高阶读书笔记)
  20. 机械硬盘低级格式化软件_如何进行硬盘低格

热门文章

  1. python 爬取加密视频_使用Python抓取m3u8加密视频 续:获得index.m3u8 地址
  2. C#/VB.NET 设置PDF跨页表格重复显示表头行
  3. Prometheus 简介与架构
  4. 数字IC设计学习笔记_静态时序分析STA_ STA基本概念
  5. 聊聊浏览器的标准模式和怪异模式
  6. 以51单片机为基础的自动循迹小车
  7. 如何让你的旧电脑跑起来与新电脑一样快?老程序员传授秘诀!
  8. java—stream流递归实现树形结构
  9. 如何点亮一盏LED灯
  10. linux查看文件是否是x86架构,Linux下查看系统架构类型的几种方法