再见ETL和ELT,您好dbt!

  > Image by Peter H from Pixabay

  每天,在全球范围内收集,操作和存储PB级的数据,以进行广泛的分析。没有管道来获取这些数据并正确使用它,大规模的数据科学将根本不可能。传统上,被称为ETL和ELT的两个过程之一被用来获取大量数据,分离出重要的位,然后将它们加载到数据湖或数据存储中。但是,这两种管道都有其缺点,并且在2022年-随着世界对分析和实时数据的依赖性越来越高-ETL和ELT不再是最犀利的剑。

  在本文中,我将对ETL和ELT进行比较,总结它们的工作原理,它们在过去和今天的常规使用方式以及为什么大多数数据科学领导者认为它们已过时。

  ELT,ETL有什么区别?

  > Image taken from Census with permission

  ELT代表提取,加载,转换,而其合作伙伴ETL同样表示提取,转换,加载。这三个步骤是任何重要数据转换中的关键过程。无论您是否意识到,它们已在全球数百万个应用程序中使用。每次您从附近的杂货店购买商品时,无论是匿名交易还是已识别交易,都将按照其中一种渠道进行洗牌,以进行财务和营销分析。让我们来看看ELT如何与ETL相提并论。

  如果我们要从各种来源(例如,一个国家的多家商店)收集数据,或者说,在水坝上不同地点的许多不同仪器要给出科学的例子,则需要将所有这些数据收集在一起,然后进行仅对我们要创建的分析重要的部分。这可能是每家商店的净销售额,在这种情况下,您需要对所有交易进行标准化和总计。或者,在水坝示例中,可能需要列出所有水压读数。这是转换过程,对于创建分析至关重要。具体来说,这就是使我们能够使用Tableau或Periscope等商业智能工具的原因。

  当我们使用ELT(即提取,加载,转换)时,我们的目的是通过在数据服务器上执行这些操作,从而避免主机执行所有这些计算量大的操作。我们没有使用杂货店的计算机来汇总交易,而是将原始数据发送到数据湖或其他存储机器,然后才制定转换阶段以获取总体利润-总计交易并减去成本,从而例。

  ELT适用于大量数据,而这些数据我们只是在进行简单的计算,例如杂货店示例。我们可以从所有来源中提取数据,例如。读卡器,将它们加载到我们的数据存储中,然后对其进行转换,以便我们轻松进行分析。

  另一方面,您拥有ETL。这与水坝示例效果更好。总体而言,我们不一定会收集大量数据,但是会有许多不同类型的读数,您可能需要对其进行大量计算以进行深入分析。最好我们也希望该数据是实时的,因此我们可以防止任何洪水!在这种情况下,提取,传输,加载更适合。无需将原始数据发送到数据存储然后进行操作,而是在将它们发送到数据存储时执行这些操作,即所谓的“转换阶段”。这样,我们甚至可以在将数据加载到数据存储之前建立一个连续的数据流!

  这两个类比很好地突出了ETL与ELT的优缺点。使用ELT,当您拥有大量数据(例如数百笔交易)时,这非常好,但是您只想执行一些相对简单的操作,例如计算利润或将销售映射到一天中的时间。

  同时,ETL可以在没有大量数据的实时情况下更好地工作,但是我们确实有很多需要正确分类的专用数据,因此需要更多的计算。

  ETL和ELT的工具

  幸运的是,对于现代世界,我们不必再进行大量编程即可为我们的数据创建简化的管道!从各种各样的数据源到各种各样的数据仓库或机器,有许多ETL和ELT工具使我们能够执行这些功能。

  例如,Hevo无编码数据管道在想要收集销售数据或有关其商店的活动信息的零售商和其他实体企业中广泛使用。但是,这对于实时数据也非常有用,因此,如果您想测量店面外部的人流量并进行时间映射,也可以使用Hevo!

  还有Fivetran,它围绕预先建立的连接器和功能构建,可带来“即插即用”的体验。

  dbt-更好的方法!

  ELT和ETL听起来似乎是完全合理的方法,可用于将数据从A传输到B进行分析,但实际上它们自己都非常麻烦。使用ELT和ETL,您必须在加载数据之前确切地知道要创建什么分析。幸运的是,它们与Fivetran,Airflow,Stitch等现代工具以及BigQuery,Snowflake和Redshift等云仓库无关。

  即使那样,最困难的部分仍然保留在变换层中。转换层是数据管道中的关键要素,但是如果它阻碍了您获取最相关的见解,那么必须有一种更好的方法。

  但是,借助一些更高级的管道技术,我们可以增加选择范围,并允许我们创建许多不同种类的分析,而不必通过管道重新发送数据并继续对其进行不同的转换!

  

  > Image taken from Census with permission

  它被称为dbt,即数据构建工具,它是一种非常灵活的命令行数据管道工具,它使我们能够非常快速,非常轻松地收集和转换数据以进行分析!dbt无需完全重新编程您的管道。

  dbt仍然像常规数据库一样是基于SQL构建的,但是它具有使用诸如jinja之类的模板引擎在其之上构建的附加功能。这有效地使您能够在SQL中引入更多逻辑(即循环,函数等)以访问,重新排列和组织数据。有点像对数据集进行编程,但具有更大的灵活性和更多选择。

  有了这段代码,您就可以使用dbt的run命令来编译代码,并在您的SQL数据上运行它,以准确获取所需的转换中所需的部分。还可以对其进行快速编程,测试和修改,而无需等待大量时间来运行所有数据,这意味着您可以在紧凑的时间表上创建新的,更好的程序版本。

  dbt不能完全取代ELT,但是它确实允许更大的灵活性-它可以极大地提高您的“ T”转换层/阶段。使用dbt,您可以按自己的喜好一次又一次地聚合,规范化和排序数据,而无需不断更新管道并重新发送。

  dbt不能替代ETL和ELT,但是随着现代技术的替代,这些独立的管道方法已变得过时。无论您遵循ETL还是ELT,可以肯定的是,dbt在您能想到的所有方面都对T(ransform)层有如此大的改进。

  谢谢阅读!

  我鼓励您检查dbt getdbt/ 。您可以从这里的快速入门指南开始,并在这里加入他们的超级有用社区。相信我,当您开始使用dbt时,您会想知道以前如何进行数据建模。

  (本文由闻数起舞翻译自Maarten Grootendorst的文章《Introducing dbt, the ETL & ELT Disrupter》,转载请注明出处,原文链接:

  towardsdatascience/introducing-dbt-the-etl-elt-disrupter-4351adc34123)

介绍dbt,ETL和ELT Disrupter相关推荐

  1. ETL VS ELT

    文章目录 什么是ETL 什么是ELT ETL vs ELT 相关框架-kestra介绍 参考 ETL和ELT是两种数据集成方法,它们主要的任务就是将数据从一个地方转移到另一个地方.两者最大的区别是:E ...

  2. ETL 与 ELT的关键区别

    ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 - 这些变化可能看起来很小,但会产生很大的影响! ETL 和 ELT 是数据团队引入.转换并最终向利益干系人公开数据的两种主要方式.它们 ...

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

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

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

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

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

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

  6. 从Oracle收购sunopsis看ETL和ELT产品的趋势

    10月10日收到Oracle收购sunopsis的消息.开始觉得有些意外.仔细一考虑应该在情理之中. 第一sunopsis采用ELT架构换句话说也就是说Sunopsis用它采用的RDBMS的功能去完成 ...

  7. etl介绍与etl工具比较_ETL万岁

    etl介绍与etl工具比较 提取转换负载是从一个数据系统中提取数据并加载到另一个数据系统中的过程. 涉及的数据系统称为源系统和目标系统. 来自源系统的数据形状与目标系统不匹配,因此需要进行一些转换以使 ...

  8. ETL和ELT的区别

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

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

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

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

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

最新文章

  1. 机器学习模型部署都有哪些坑?剑桥研究者梳理了99篇相关研究
  2. python中选择结构通过什么语句实现_Python中选择结构通过什么语句实现
  3. Java中通过JDBC操作MySQL数据库
  4. 无需Root也能Hook?——Depoxsed框架演示
  5. 用户体验设计师能为seo做_用户体验设计师可以从产品设计历史中学到什么
  6. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)
  7. Linux中msiexec无法运行,使用msiexec.exe绕过应用程序白名单(多种方法)
  8. 【C/C++】inline函数和static函数和宏定义的比较
  9. 架构师必备!英特尔携手Science联袂推出“架构师成长计划”,来自阿里云、AWS、百度、顺丰、平安等头部大厂专家分享实战经验...
  10. 单片机c语言1602怎么接线,lcd1602中文资料分享:lcd1602接线图_lcd1602与单片机连接图 - 全文...
  11. python 解压zip rar 7z文件
  12. PR免费转场 PR剪辑视频图形转场PR动态图形模板MOGRT
  13. 参考文献标引方式_论文中参考文献标注方法有哪些?
  14. CAD零基础教程笔记
  15. java毕业设计老师评语_java教学评价管理系统毕业设计答辩PPT.ppt
  16. MYS-6ULX-IOT 开发板测评——Yocto 创建嵌入式 Linux 发行版
  17. Windows下搭建PHP扩展开发环境
  18. 【linux内核分析与应用-陈莉君】物理内存分配与回收机制下
  19. Python实现占用栅格地图的生成(Occupancy Grid Generation)
  20. 计算机显示器接法,电脑和显示器怎么连接_显示器连接电脑方法-win7之家

热门文章

  1. 我是如何一步步获取房东的WiFi后台管理密码的【社工思路】
  2. 关于PoE供电,你想知道的这里都有
  3. java竖线_JAVA 竖线|转义字符 | | 学步园
  4. Pure DNS 可能是迄今最不稳定的DNS
  5. Mr.Xiong使用jQuery实现时钟表盘的效果
  6. Vue3+file-saver+xlsx 实现 excel 导出
  7. edp接口规范_EDP接口是什么接口?EDP是什么的缩写?
  8. 数据分析的重要性体现在哪?
  9. Percent Library百分比布局详解
  10. Next.js基本使用