ETL 與 ELT:解開關(guān)鍵區(qū)別
ETL 和 ELT 之間的主要區(qū)別在于數(shù)據(jù)轉(zhuǎn)換發(fā)生的時(shí)間和地點(diǎn) — 這些變化可能看起來(lái)很小,但會(huì)產(chǎn)生很大的影響!
ETL 和 ELT 是數(shù)據(jù)團(tuán)隊(duì)引入、轉(zhuǎn)換并最終向利益干系人公開數(shù)據(jù)的兩種主要方式。它們是與現(xiàn)代云數(shù)據(jù)倉(cāng)庫(kù)和 ETL 工具的開發(fā)并行發(fā)展的流程。
在任一過(guò)程中,ETL/ELT 中的字母代表:
E:提取,當(dāng)原始數(shù)據(jù)從不同的數(shù)據(jù)源中提取時(shí)。這些數(shù)據(jù)源通常包括后端數(shù)據(jù)庫(kù)、營(yíng)銷和電子郵件 CRM、廣告平臺(tái)等。
L:加載,當(dāng)數(shù)據(jù)加載到中央數(shù)據(jù)倉(cāng)庫(kù)時(shí)。
T:轉(zhuǎn)換,當(dāng)原始數(shù)據(jù)被建模為統(tǒng)一、有意義和標(biāo)準(zhǔn)化的格式時(shí)。
這兩個(gè)過(guò)程的分歧在于轉(zhuǎn)換層的時(shí)間和位置。簡(jiǎn)而言之,在 ETL 過(guò)程中,原始數(shù)據(jù)的轉(zhuǎn)換發(fā)生在數(shù)據(jù)倉(cāng)庫(kù)之前。在 ELT 流程中,原始數(shù)據(jù)已丟棄后,數(shù)據(jù)倉(cāng)庫(kù)中會(huì)發(fā)生轉(zhuǎn)換;在這種方法中,原始數(shù)據(jù)和轉(zhuǎn)換后的數(shù)據(jù)都位于數(shù)據(jù)倉(cāng)庫(kù)中。
這不僅僅是語(yǔ)義,轉(zhuǎn)換發(fā)生的時(shí)間和地點(diǎn)的順序在數(shù)據(jù)團(tuán)隊(duì)如何存儲(chǔ)、治理、標(biāo)準(zhǔn)化、建模和測(cè)試數(shù)據(jù)方面起著至關(guān)重要的作用。使用此頁(yè)面了解這兩個(gè)過(guò)程的不同之處、每個(gè)選項(xiàng)的優(yōu)點(diǎn)和缺點(diǎn),以及哪種方法最適合您和您的團(tuán)隊(duì)。
ETL 與 ELT:高級(jí)概述
ETL 和 ELT 之間的主要區(qū)別在于轉(zhuǎn)換的時(shí)間和位置:它是在數(shù)據(jù)加載到數(shù)據(jù)倉(cāng)庫(kù)之前還是在存儲(chǔ)之后發(fā)生。這種轉(zhuǎn)換順序?qū)σ韵路矫婢哂邢喈?dāng)大的影響:
實(shí)施管道所需的技術(shù)技能,
支持每個(gè)選項(xiàng)所需的產(chǎn)品數(shù)量和復(fù)雜性,
技能團(tuán)隊(duì)雇用的數(shù)據(jù)團(tuán)隊(duì)本身的結(jié)構(gòu),以及
數(shù)據(jù)堆棧的準(zhǔn)備性和靈活性。
在我們深入了解這些差異的細(xì)節(jié)之前,讓我們清楚地定義什么是 ETL 和 ELT,以及為什么 ELT 已成為分析行業(yè)的最新現(xiàn)象。
什么是 ETL?

ETL 或“提取、轉(zhuǎn)換、加載”是首先從數(shù)據(jù)源中提取數(shù)據(jù),對(duì)其進(jìn)行轉(zhuǎn)換,然后將其加載到目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)的過(guò)程。在 ETL 工作流中,許多有意義的數(shù)據(jù)轉(zhuǎn)換都發(fā)生在下游商業(yè)智能 (BI) 平臺(tái)的此主要管道之外。
在許多方面,ETL 工作流可以重命名為 ETLT 工作流,因?yàn)橄喈?dāng)一部分有意義的數(shù)據(jù)轉(zhuǎn)換發(fā)生在數(shù)據(jù)管道之外。相同的轉(zhuǎn)換可能發(fā)生在 ETL 和 ELT 工作流中,主要區(qū)別在于何時(shí)(在主 ETL 工作流內(nèi)部或外部)以及轉(zhuǎn)換數(shù)據(jù)的位置(ETL 平臺(tái)/BI 工具/數(shù)據(jù)倉(cāng)庫(kù))。
什么是 ELT?

提取、加載、轉(zhuǎn)換 (ELT) 是首先從不同數(shù)據(jù)源提取數(shù)據(jù),然后將其加載到目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)中,最后轉(zhuǎn)換數(shù)據(jù)的過(guò)程。
ELT 已成為如何在現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)中管理信息流的范例。這代表了以前處理數(shù)據(jù)的方式的根本轉(zhuǎn)變,當(dāng)時(shí)ETL是大多數(shù)公司實(shí)施的數(shù)據(jù)工作流。
從 ETL 過(guò)渡到 ELT 意味著您不再需要在將數(shù)據(jù)初始加載到數(shù)據(jù)倉(cāng)庫(kù)期間捕獲轉(zhuǎn)換。相反,您可以加載所有數(shù)據(jù),然后在其上構(gòu)建轉(zhuǎn)換。數(shù)據(jù)團(tuán)隊(duì)報(bào)告說(shuō),與傳統(tǒng)的 ETL 工作流相比,ELT 工作流有幾個(gè)優(yōu)點(diǎn),我們將在下面的部分中介紹這些優(yōu)勢(shì)。
ETL 和 ELT 之間的核心區(qū)別和相似之處
您可以閱讀交替使用 ETL 和 ELT 的其他文章或技術(shù)文檔。在紙面上,唯一的區(qū)別是 T 和 L 出現(xiàn)的順序。然而,這種簡(jiǎn)單的字母切換會(huì)徹底改變數(shù)據(jù)在企業(yè)系統(tǒng)中存在和流動(dòng)的方式。
在這兩個(gè)過(guò)程中,來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)以類似的方式提取。但是,在 ELT 工作流中發(fā)生轉(zhuǎn)換之前,數(shù)據(jù)將直接加載到目標(biāo)倉(cāng)庫(kù)中?,F(xiàn)在,原始數(shù)據(jù)和轉(zhuǎn)換后的數(shù)據(jù)都可以存在于數(shù)據(jù)倉(cāng)庫(kù)中。在 ELT 工作流中,數(shù)據(jù)從業(yè)者在有機(jī)會(huì)探索和分析原始數(shù)據(jù)后,可以靈活地對(duì)數(shù)據(jù)進(jìn)行建模。ETL 工作流可能更具限制性,因?yàn)檗D(zhuǎn)換在提取后立即發(fā)生。
下面,我們分解了兩者之間的其他一些主要區(qū)別:
?ELTETL所需的編程技能通常幾乎不需要代碼即可將數(shù)據(jù)提取并加載到數(shù)據(jù)倉(cāng)庫(kù)中。SQL 是轉(zhuǎn)換背后的主要力量。通常需要自定義腳本或相當(dāng)大的數(shù)據(jù)工程提升,以便在加載之前提取和轉(zhuǎn)換數(shù)據(jù)。Python,Scala和SQL通常用于轉(zhuǎn)換數(shù)據(jù)本身。關(guān)注點(diǎn)分離提取層、加載層和轉(zhuǎn)換層可以由不同的產(chǎn)品顯式分離出來(lái)。ETL 過(guò)程通常封裝在一個(gè)產(chǎn)品中。變換的分布由于轉(zhuǎn)換是最后發(fā)生的,因此建模過(guò)程具有更大的靈活性。首先擔(dān)心將數(shù)據(jù)放在一個(gè)地方,然后您有時(shí)間探索數(shù)據(jù)以了解轉(zhuǎn)換數(shù)據(jù)的最佳方式。由于轉(zhuǎn)換發(fā)生在將數(shù)據(jù)加載到目標(biāo)位置之前,因此團(tuán)隊(duì)必須先進(jìn)行徹底的工作,然后才能確保正確轉(zhuǎn)換數(shù)據(jù)。大量轉(zhuǎn)換通常發(fā)生在 BI 層的下游。數(shù)據(jù)團(tuán)隊(duì)角色ELT 工作流使了解 SQL 的數(shù)據(jù)團(tuán)隊(duì)成員能夠創(chuàng)建自己的提取和加載管道及轉(zhuǎn)換ETL 工作流通常需要具有更高技術(shù)技能的團(tuán)隊(duì)來(lái)創(chuàng)建和維護(hù)管道
ELT 如何發(fā)展現(xiàn)代分析空間
為什么近年來(lái)ELT的采用增長(zhǎng)如此之快?幾個(gè)原因:
大量廉價(jià)的云存儲(chǔ)和現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)。?Redshift 和 Snowflake 等現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)的創(chuàng)建使得各種規(guī)模的團(tuán)隊(duì)都可以以更有效的成本存儲(chǔ)和擴(kuò)展他們的數(shù)據(jù)。這是 ELT 工作流程的巨大推動(dòng)因素。
開發(fā)低代碼或無(wú)代碼數(shù)據(jù)提取器和加載器。?Fivetran 和 Stitch 等需要很少技術(shù)專業(yè)知識(shí)的產(chǎn)品可以從許多數(shù)據(jù)源中提取數(shù)據(jù)并將其加載到許多不同的數(shù)據(jù)倉(cāng)庫(kù)中,這有助于降低進(jìn)入 ELT 工作流程的門檻。數(shù)據(jù)團(tuán)隊(duì)現(xiàn)在可以減輕提取數(shù)據(jù)和創(chuàng)建復(fù)雜轉(zhuǎn)換所需的一些數(shù)據(jù)工程負(fù)擔(dān)。
一個(gè)真正的基于代碼、版本控制的轉(zhuǎn)換層,帶有 dbt 的開發(fā)。?在開發(fā)dbt之前,沒(méi)有單一的轉(zhuǎn)換層產(chǎn)品。dbt 幫助數(shù)據(jù)分析師將軟件工程最佳實(shí)踐(版本控制、CI/CD 和測(cè)試)應(yīng)用于數(shù)據(jù)轉(zhuǎn)換,最終允許任何了解 SQL 的人參與 ELT 過(guò)程。
近年來(lái),ELT層和技術(shù)之間的兼容性不斷提高。?隨著提取、加載和轉(zhuǎn)換層的擴(kuò)展,這些層與云存儲(chǔ)緊密集成,ELT 工作流從未如此易于訪問(wèn)。例如,F(xiàn)ivetran 創(chuàng)建和維護(hù) dbt 包,以幫助為它們連接到的數(shù)據(jù)源編寫 dbt 轉(zhuǎn)換。
那么什么是適合您的正確選擇?
您已經(jīng)閱讀了本文,反思了當(dāng)前數(shù)據(jù)堆棧的勝利和掙扎,并最終提出了一個(gè)黃金問(wèn)題:哪個(gè)流程最適合您、您的數(shù)據(jù)團(tuán)隊(duì)和您的業(yè)務(wù)?
下面,我們分解了您在考慮如何通過(guò)數(shù)據(jù)增強(qiáng)團(tuán)隊(duì)和業(yè)務(wù)能力時(shí)應(yīng)采取的關(guān)鍵考慮因素,以及 ELT/ELT 流程如何影響該方法。
以下內(nèi)容對(duì)您有多重要?
控制數(shù)據(jù)轉(zhuǎn)換的版本
將原始數(shù)據(jù)和建模數(shù)據(jù)存儲(chǔ)在統(tǒng)一位置
自動(dòng)測(cè)試和記錄數(shù)據(jù)
使參與數(shù)據(jù)管道工作的人員民主化 - 您是否希望將數(shù)據(jù)分析師納入數(shù)據(jù)轉(zhuǎn)換的行列,并消除數(shù)據(jù)工程師對(duì)復(fù)雜數(shù)據(jù)管道的責(zé)任?
核心業(yè)務(wù)指標(biāo)的治理和標(biāo)準(zhǔn)化
如果這些事情對(duì)你以及你的數(shù)據(jù)、團(tuán)隊(duì)和業(yè)務(wù)的健康至關(guān)重要,請(qǐng)考慮更多地了解 dbt(鼓勵(lì)數(shù)據(jù)從業(yè)者體現(xiàn)軟件工程最佳實(shí)踐的工具)如何改變現(xiàn)代分析空間。