当前位置: 首页 > news >正文

ETL 与 ELT的关键区别

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的关键区别

ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 — 这些变化可能看起来很小,但会产生很大的影响! ETL 和 ELT 是数据团队引入、转换并最终向利益干系人公开数据的两种主要方式。它们是与现代云数据仓库和 ETL 工具的开发并行发展的流程。 在任…...

Thinkphp 6.0模版的杂项和表单令牌

本节课我们来学习一下模版的杂项和表单令牌的功能。 一.模版的杂项 1. 有时,我们需要输出类似模版标签或语法的数据,这时会被模版解析; 2. 此时,我们就使用模版的原样输出标签{literal}; {literal} 变量标…...

linux常问

查看当前进程 ps -l 列出与本次登录有关的进程信息; ps -aux 查询内存中进程信息; ps -aux | grep * 查询 *进程的详细信息; top 查看内存中进程的动态信息; kill -9 pid 杀死进程。...

ToBeWritten之物联网MQTT、Z-Wave等协议

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

C# 行为型模式之责任链模式

责任链模式:请求从链中的一个对象传递到下一个对象,直到请求被响应为止。通过这种方式在对象之间去除耦合。 用途:请假审批、采购审批等。 案例介绍:以公司采购东西为例子来实现责任链模式。公司规定,采购架构总价在…...

layui实现请求前添加一个加载 loading 的效果,并在请求成功后关闭

1.使用 layui 的 layer 组件来实现请求前添加一个加载 loading 的效果,并在请求成功后关闭。 $("#switch").click(function() {layer.confirm(确认切换至英文环境?, function(index) {var loadingIndex layer.load(1, {shade: [0.1,#fff] //0.1透明度的…...

iostat / sar 命令详解

作用 iostat主要用于监控系统设备的IO负载情况&#xff0c;根据这个可以看出当前系统的写入量和读取量&#xff0c;CPU负载和磁盘负载。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 iostat用法 1.用法&#xff1a;iostat [选项] [<时间间隔>] […...

2023-04-06:拥抱Golang,优化FFmpeg音频编码器,探究encode_audio.c的内部结构。

2023-04-06&#xff1a;拥抱Golang&#xff0c;优化FFmpeg音频编码器&#xff0c;探究encode_audio.c的内部结构。 答案2023-04-06&#xff1a; 见moonfdd/ffmpeg-go库。 这段代码是一个示例程序&#xff0c;用于将音频 PCM 数据编码为 MP2 格式的音频文件。下面是代码的详细…...

归排、计排深度理解

归并排序&#xff1a;是创建在归并操作上的一种有效的排序算法。算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用&#xff0c;且各层分治递归可以同时进行。归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#…...

设计原则(单一职责原则 开放封闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则)

设计原则单一职责原则(SRP)从三大特性角度看原则:应用的设计模式&#xff1a;开放封闭原则(OCP)从三大特性角度看原则:应用的设计模式&#xff1a;里氏替换原则(LSP)从三大特性角度看原则:应用的设计模式&#xff1a;依赖倒置原则(DIP)从三大特性角度看原则:应用的设计模式&…...

好像模拟了一个引力场

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 做一个网络让输入只有3个节点&#xff0c;每个训练集里有4张图片&#xff0c;让B的训练集全为0&#xff0c;排列组合A&#xff0c;观察迭代次数平均值的变化。 A-B 迭代次数 0 1 0 2*0*0*7-0*0*0*0 12957.31 0 0 0 2*0*0*7-0*0…...

MySQL优化——Explain分析执行计划详解

文章目录前言一. 查看SQL执行频率二. 定位低效率执行SQL三. explain分析执行计划3.1 id3.2 select_type3.3 table3.4 type3.5 key3.6 rows3.7 extra四. show profile分析SQL前言 在应用的的开发过程中&#xff0c;由于初期数据量小&#xff0c;开发人员写 SQL 语句时更重视功能…...

xcode 14.3 file not found libarclite_iphoneos.a

最近升级到xcode 14.3 版本的同学&#xff0c;会遇到这个一个问题 File not found: /Users/johnson/Downloads/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a 解决方法(亲测有效) 在podfile文件中&#xff0c;增…...

基于AI+数据驱动的慢查询索引推荐

目前&#xff0c;美团内部每天产生的慢查询数量已经超过上亿条。如何高效准确地为慢查询推荐缺失的索引来改善其执行性能&#xff0c;是美团数据库研发中心面临的一项挑战。为此&#xff0c;我们与华东师范大学开展了科研合作&#xff0c;在AI领域对索引推荐进行了探索和实践&a…...

【ESP32】嵌入式FreeRtos--Task

FreeRTOS中文数据手册&#xff1a;https://www.freertos.org/zh-cn-cmn-s/RTOS.html 任务函数 任务函数描述xTaskCreate()使用动态的方法创建一个任务xTaskCreateStatic()使用静态的方法创建一个任务xTaskCreatePinnedToCore指定任务运行的核心(最后一个参数)vTaskDelete()删…...

【操作系统】面试官都爱问的进程调度算法

【操作系统】面试官都爱问的进程调度算法 文章目录【操作系统】面试官都爱问的进程调度算法先来先服务调度算法最短作业优先调度算法高响应比优先调度算法时间片轮转调度算法最高优先级调度算法多级反馈队列调度算法进程调度算法也称 CPU 调度算法&#xff0c;毕竟进程是由 CPU…...

Spring-Web spi机制解析

org.springframework.web.SpringServletContainerInitializer#onStartup 在这里打个断点&#xff0c;查看程序是否会进来 可以发现程序进来了&#xff1a;主要spi机制&#xff0c;看看这里做了什么操作&#xff1f; 去寻找所有实现了WebApplicationInitializer的类 将符合条件…...

数据结构|将链表中小于0的数全部放在大于0的数的前面

题1&#xff1a; 某带头结点的非空单链表L中所有元素为整数&#xff0c;结点类型定义如下&#xff1a; typedef struct node { int data; struct node *next; } LinkNode; 设计一个尽可能高效的算法&#xff0c;将所有小于零的结点移到所有大于等于零的结点的前面。 分…...

分享106个ASP影音娱乐源码,总有一款适合您

分享106个ASP影音娱乐源码&#xff0c;总有一款适合您 106个ASP影音娱乐源码下载链接&#xff1a;https://pan.baidu.com/s/13k8UaJrCci_z4Q0gQbtDtg?pwdjq44 提取码&#xff1a;jq44 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 我的博客地址&#xff1a;亚…...

win10 PyCharm Anaconda过程记录

1、Anaconda用来配置不同的虚拟环境 进入 Anaconda Prompt 输入conda activate Hui&#xff08;此为自己创建的放置虚拟环境的文件夹&#xff09; 编译运行过程中出现No module named seaborn后 pip install seaborn...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...