ETL vs ELT

部署运行你感兴趣的模型镜像

在数据仓库里对于数据的加工一直有一个很有意思的话题,就是ETL和ELT,我记得零几年那会儿,刚开始有商业智能或者数据仓库概念的时候,只有ETL,直到后来行业逐渐成熟了起来,才又有了ELT的概念。
他们到底是怎么回事从技术角度来解释的方法很多,最近在Linkedin上看到一个图,很有意思,大体如下:

img

技术领域的理解

这个图片生动的展示了ETL和ELT的区别,也就是你是把水果加工成果汁之后拿去卖,还是把水果运走之后再找地方加工成果汁之后然后拿去卖。
在我们的实际的数据仓库项目中,对应的区别就是,你要去获取的数据,是先原封不动的拿过来,还是拿过来的时候就做好相应的转换。

现实世界中的理解以及问题的提出

我很喜欢这个图,所以在我朋友圈发了出来,很多朋友都看到了,都对这种解释方式很认可,包括我媳妇,虽然她不是做数据方面的,但是她作为一个领域外的人居然看懂了。
不过她的一个问题很有意思,就是什么情况下应该选择前者,什么情况下选择后者呢?
所以在我们数据仓库的建设中,实际上就是根据项目规模的大小来决定,如果是个小型的项目,那么就ETL,如果是大型项目那么就ELT.
所以回到现实世界,回到这个图,就是取决于水果厂的规模,如果只是村里的小规模简单加工,都是农户自己家采摘自己家地里的水果并且自己加工的,比如老张家的果汁,老李家的果汁。
但如果你是一个国内比较大的水果厂,通常这些大厂会在水果产地建立一个比较大的工厂,他们不会从老张家或者老李家去收购果汁,而是会从不止老李家或者老张家去收购水果,把村里镇里或者市里所有的水果都收购了,统一加工处理。这样才能保证产量的基础之上,提高生产效率。而老张家和老李家也不用担心每年的水果和自产的果汁都卖给谁。

关于ETL和ELT的进一步衍生

在数据仓库领域中,后续除了从ETL衍生出了ELT,实际也衍生出过更进一步的方法,比如ETLT,也就是在数据E之后先进行一个T,专注于数据的标准化处理,或者是异构数据的处理。对应到果汁的故事里,就好比在地方工厂里我收集到水果,先把水果加工成浓缩果汁,然后再送给下一步的工厂,加工或者还原成果汁,比如混合型果汁,这种方式应该是目前最主流的方式。当然这又涉及到了原榨果汁和浓缩果汁的区别,讨论起来除了成本和市场占有量之外仍是一个非常复杂的话题,这里超出了本文的范围所以不过多讨论。

关于本文的一些补充:

由于最近在做跟AI相关的事,以前没接触的时候没指望它能帮助太多,但是逐渐了解并且看身边的人使用之后才发现这个东西有时候真的能帮你打开一扇窗。
比如对于这个果汁加工问题的理解,刚开始我以为大厂都是从全国收集水果然后到国内某一个加工大厂一起护理的,经过字节旗下的豆包查询后,我了解到原来大厂不是这么操作的,并且进一步了解到他们都是在产地周边建厂,以减少水果在运输中产生的损耗。所以为了严谨我修改了现实世界中故事的讲述方式。
当然在我对我的理解不是100%确定正确的情况下,我也会在豆包里问ETL和ELT的区别,豆包会汇总它所收集到的信息帮我提炼出区别,让我快速理解,好判断出我描述的方式是否有很大的偏差。
经过这个写作的过程,我们可以看到AI确实是可以帮助我们解决一些特定的问题,而实际了解下不难发现,实际很多人都已经开始这么工作了,原来自己被时代落下了这么远的距离。
所以无论如何,即使你不从事AI方面的工作,我也建议你了解下AI工具,比如我提到的字节旗下的豆包,真的是一个很亲民的平台,没有那么多的门槛,直接拿来用就行。
当然如果你是一个程序员,你也可以了解下字节旗下的AI代码助手,通过博客园顶部的链接就可以了解到,用赵本山的话说:谁用谁知道。

原创作者: aspnetx 转载于: https://www.cnblogs.com/aspnetx/p/18940820

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备一定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
### ETLELT 的区别 ETL(Extract, Transform, Load)和 ELT(Extract, Load, Transform)是两种常见的数据集成方法,它们在数据处理流程中的关键差异在于**转换阶段的执行顺序**。 在 ETL 中,数据首先从源系统中被抽取(Extract),然后在专用的处理环境中进行转换(Transform),包括清洗、聚合、格式化等操作,最后将处理后的数据加载(Load)到目标系统,如数据仓库中。这种方式适用于对数据质量要求较高、需要复杂转换逻辑的场景,因为转换过程是在加载之前完成的,能够确保进入目标系统的数据是干净且一致的[^3]。 ELT 则是将数据先从源系统中抽取并加载到目标系统中,然后利用目标系统的计算能力进行转换操作。这种方法依赖于现代数据仓库(如 Snowflake、BigQuery、Redshift)的强大计算能力,能够在数据加载之后进行灵活的转换。ELT 的优势在于其高扩展性和灵活性,尤其适合大规模数据处理和实时数据管道的构建[^1]。 ### 应用场景对比 #### ETL 的适用场景: - **数据质量要求高**:ETL 在加载前完成数据清洗和转换,适合对数据准确性有严格要求的应用,如财务报表、合规性分析等。 - **处理能力有限的环境**:如果目标系统不具备强大的计算能力,ETL 可以在专用的处理引擎中进行转换,减轻目标系统的负担。 - **批处理场景**:ETL 更适合定时批量处理数据,例如每日或每周的数据汇总任务。 - **传统数据仓库架构**:在基于传统关系型数据库或数据仓库的架构中,ETL 是较为常见的数据集成方式[^2]。 #### ELT 的适用场景: - **大规模数据处理**:ELT 利用现代数据仓库的分布式计算能力,能够高效处理 PB 级别的数据集。 - **实时或近实时分析**:ELT 允许数据快速加载到目标系统,随后进行转换,支持更快速的数据可用性,适合实时仪表板、业务监控等场景。 - **灵活性和可扩展性需求高**:ELT 支持不断变化的数据结构和转换逻辑,适合敏捷开发和数据湖架构。 - **云数据平台环境**:在云数据仓库或数据湖中,ELT 更能发挥其优势,因为这些平台通常具备强大的弹性计算和存储能力[^4]。 ### 代码示例:ETLELT 的流程模拟 以下是一个简单的 Python 示例,演示 ETLELT 的流程差异。 #### ETL 示例(使用 Pandas 进行转换): ```python import pandas as pd # Extract data = pd.read_csv('source_data.csv') # Transform cleaned_data = data.dropna() cleaned_data['total'] = cleaned_data['quantity'] * cleaned_data['price'] # Load cleaned_data.to_sql('sales', con=engine, if_exists='replace') ``` #### ELT 示例(在数据库中执行转换): ```python import pandas as pd # Extract and Load data = pd.read_csv('source_data.csv') data.to_sql('raw_sales', con=engine, if_exists='replace') # Transform (executed in the database) with engine.connect() as conn: conn.execute(""" CREATE TABLE transformed_sales AS SELECT *, quantity * price AS total FROM raw_sales WHERE quantity IS NOT NULL AND price IS NOT NULL """) ``` ### 总结 ETLELT 各有优势,ETL 更适合对数据质量要求高、处理逻辑复杂的场景,而 ELT 更适合大规模、灵活、实时性强的数据处理需求。随着数据平台技术的发展,两者之间的界限也在逐渐模糊,许多现代数据平台支持混合使用 ETLELT 流程,以实现最佳的数据集成效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值