介绍dbt,ETL和ELT Disrupter

  再见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)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值