ETL,是英文Extract-Transform-Load的縮寫,用來描述將資料從來源端經過抽取(extract)、轉換(transform)、載入(load)至目的端的過程。ETL一詞較常用在資料倉儲,但其物件並不限於資料倉儲。它的主要作用是將企業中分散、非完全結構化、標準不統一的各種資料,整合到一起,形成企業級統一資料倉儲,為企業的分析決策提供有質量保證的資料來源。
今天的組織擁有來自各種來源的結構化和非結構化資料,包括:
通過應用提取、轉換、載入(ETL)過程,可以以更易於分析的格式和結構準備單個原始資料集,從而產生更有意義的見解。例如,線上零售商可以分析來自銷售點的資料來預測需求和管理庫存。行銷團隊可以將 CRM 資料與社交媒體上的客戶反饋相結合,以研究使用器行為。
提取、轉換、載入(ETL)通過使流程更加可靠、準確、詳細和高效來改進商業智慧和分析。
ETL 為組織的資料提供了深刻的歷史背景。企業可以將遺留資料與來自新平臺和應用程式的資料相結合。您可以檢視較舊的資料集以及較新的資訊,從而為您提供長期的資料檢視。
ETL 提供統一的資料檢視,以便進行深入分析和報告。管理多個資料集需要時間和協調,並可能導致效率低下和延遲。ETL 會將資料庫和各種形式的資料整合到一個統一的檢視中。資料整合過程提高了資料質量並節省了移動、分類或標準化資料所需的時間。這使得分析、視覺化和理解大型資料集變得更加容易。
ETL 提供更準確的資料分析,以滿足合規性和監管標準。您可以將 ETL 工具與資料質量工具整合,對資料進行剖析、審計和清理,確保資料可信。
ETL 會自動執行可重複的資料處理任務以進行高效分析。ETL 工具會自動執行資料遷移過程,您可以將它們設定為定期,甚至在執行時整合資料更改。因此,資料工程師可以將更多時間用於創新,並減少在管理繁瑣的任務(例如移動和格式化資料)上花費的時間。
提取、轉換、載入(ETL)起源於關聯式資料庫的出現,該資料庫以表格的形式儲存資料以供分析。早期的 ETL 工具試圖將資料從事務資料格式轉換為關係資料格式以進行分析。
原始資料通常儲存在支援許多讀寫請求但不能很好地用於分析的交易資料庫中。您可以將其視為電子試算表中的一行。例如,在電子商務系統中,交易資料庫將購買的商品、客戶詳細資訊和訂單詳細資訊儲存在一次交易中。在這一年中,它包含了一個長長的交易清單,其中包含同一客戶在一年中購買了多件商品的重複條目。由於資料重複,分析當年最受歡迎的商品或購買趨勢變得很麻煩。
為了克服這個問題,ETL 工具自動將此交易資料轉換為具有互連表格的關係資料。除了模式和趨勢之外,分析師還可以使用查詢來識別表之間的關係。
隨著 ETL 技術的發展,資料型別和資料來源都呈指數級增長。雲技術的出現是為了建立龐大的資料庫(也稱為資料接收器)。此類資料接收器可以從多個來源接收資料,並具有可以隨時間擴充套件的底層硬體資源。ETL 工具也變得更加複雜,可以與現代資料接收器一起使用。他們可以將資料從傳統資料格式轉換為現代資料格式。現代資料庫的範例如下。
資料倉儲是可以儲存多個資料庫的中央儲存庫。在每個資料庫中,您可以將資料組織成表和描述表中資料型別的列。資料倉儲軟體適用於多種型別的儲存硬體,例如固態驅動器(SSD)、硬碟機和其他雲端儲存,以優化您的資料處理。
藉助資料湖,您可以將結構化和非結構化資料以任意規模儲存在一個集中式儲存庫中。您可以按原樣儲存資料,而不必首先根據您將來可能遇到的問題對其進行結構化。資料湖還讓您可以對資料執行不同型別的分析(如 SQL 查詢、巨量資料分析、全文搜尋、實時分析和機器學習(ML)等)來獲得更深入的見解。
提取、轉換、載入(ETL)的工作是定期將資料從源系統移動到目標系統。ETL 過程分三個步驟:
簡單來說:主要包含三大階段,分別是資料抽取、資料轉換、資料載入。
在資料提取中,提取、轉換、載入(ETL)工具從多個來源提取或複製原始資料並將其儲存在暫存區域中。暫存區(或登入區)是用於臨時儲存提取資料的中間儲存區。資料暫存區通常是暫時的,這意味著它們的內容在資料提取完成後會被刪除。但是,暫存區也可能會出於故障排除的目的而保留資料存檔。
系統將資料從資料來源傳送到目標資料儲存的頻率取決於底層變更資料捕獲機制。資料提取通常通過以下三種方式之一進行。
在更新通知中,源系統會在資料記錄發生更改時通知您。然後,您可以針對該更改執行提取過程。大多數資料庫和 Web 應用程式都提供更新機制來支援這種資料整合方法。
某些資料來源無法提供更新通知,但可以識別和提取在給定時間段內經過修改的資料。在這種情況下,系統會定期檢查更改,例如每週一次、每月一次或活動結束時。您只需要提取已更改的資料。
某些系統無法識別資料更改或發出通知,因此重新載入所有資料是唯一的選擇。這種提取方法要求您保留上次提取的副本以檢查哪些記錄是新的。由於此方法涉及大量資料傳輸,因此我們建議您僅將其用於小型表格。
在資料轉換中,提取、轉換、載入(ETL)工具將轉換和整合暫存區域中的原始資料,為目標資料倉儲做好準備。資料轉換階段可能涉及以下型別的資料更改。
基本轉換通過消除錯誤、清空資料欄位或簡化資料來提高資料質量。這些轉換的範例如下。
資料清理可消除錯誤並將源資料對映到目標資料格式。例如,您可以將空資料欄位對映到數位 0,將資料值「Parent」對映到「P」,或將「Child」對映到「C」。
資料清理中的去重複將識別並刪除重複記錄。
格式修訂會將字元集、測量單位和日期/時間值等資料轉換為一致的格式。例如,一家食品公司可能有不同的配方資料庫,其成分以千克和磅為單位。ETL 會將所有單位轉換為磅。
高階轉換使用業務規則來優化資料以便於分析。這些轉換的範例如下。
推導將業務規則應用於您的資料,以根據現有值計算新值。例如,您可以通過減去費用或通過將每件商品的價格乘以訂購的商品數量來計算購買的總成本來將收入轉換為利潤。
在資料準備中,聯結將連結來自不同資料來源的相同資料。例如,您可以通過將不同供應商的採購價值相加,並僅將最終總計儲存在目標系統中來找出某件物品的總採購成本。
您可以在目標系統中將列或資料屬性劃分為多個列。例如,如果資料來源將客戶名稱儲存為「Jane John Doe」,您可以將其拆分為名字、中間名和姓氏。
彙總通過將大量資料值減少到較小的資料集中來提高資料質量。例如,客戶訂單發票值可以有許多不同的小金額。您可以通過將給定時間段內的資料相加來彙總資料,以構建客戶生命週期價值(CLV)指標。
您可以通過在資料流到目標資料庫之前新增加密來保護敏感資料,以遵守資料法律或資料隱私。
在資料載入中,提取、轉換、載入(ETL)工具會將轉換後的資料從暫存區移動到目標資料倉儲。對於大多數使用 ETL 的組織來說,該過程是自動化的、定義明確的、連續的和批次處理驅動的。下面是兩種載入資料的方法。
在完全載入時,來自源的全部資料被轉換並移動到資料倉儲。完全載入通常發生在您第一次將資料從源系統載入到資料倉儲中時。
在增量載入中,ETL 工具會定期載入目標系統和源系統之間的增量(或差異)。它會儲存最後提取日期,以便僅載入在此日期之後新增的記錄。有兩種方法可以實現增量載入。
如果您的資料量較小,您可以通過資料管道將持續更改流式傳輸到目標資料倉儲。當資料速度增加到每秒數百萬個事件時,您可以使用事件流處理來監控和處理資料流,從而更及時地做出決策。
如果您的資料量很大,您可以定期分批收集將負載資料更改。在此設定的時間段內,由於資料同步,源系統或目標系統都不會發生任何操作。
提取、載入、轉換(ELT)是提取、轉換、載入(ETL)的擴充套件,它顛倒了操作的順序。您可以在處理資料之前將資料直接載入到目標系統中。不需要中間暫存區,因為目標資料倉儲中具有資料對映功能。隨著雲基礎設施的採用,ELT 變得越來越流行,這為目標資料庫提供了轉換所需的處理能力。
ELT 適用於需要頻繁載入的大容量、非結構化資料集。它也是巨量資料的理想選擇,因為可以在資料提取和儲存之後進行分析規劃。它將大部分轉換留給分析階段,並專注於將經過最少處理的原始資料載入到資料倉儲中。
ETL 過程在開始時需要更多的定義。分析需要從一開始就參與定義目標資料型別、結構和關係。資料科學家主要使用 ETL 將遺留資料庫載入到倉庫中,而 ELT 已成為當今的常態。
資料虛擬化使用軟體抽象層來建立整合資料檢視,而無需物理提取、轉換或載入資料。組織將此功能用作虛擬統一資料儲存庫,無需為源和目標構建和管理單獨平臺的費用和複雜性。雖然您可以將資料虛擬化與提取、轉換、載入(ETL)一起使用,但它越來越被視為 ETL 和其他物理資料整合方法的替代方法。例如,您可以使用 AWS Glue Elastic Views 從多個不同的源資料儲存中快速建立虛擬表(物化檢視)。
參考檔案:
https://aws.amazon.com/cn/what-is/etl/
https://zhuanlan.zhihu.com/p/352337320
https://zhuanlan.zhihu.com/p/403670859
https://www.cnblogs.com/yjd_hycf_space/p/7772722.html
Apache Hop是Hop Orchestration Platform的縮寫,是一個資料編排和資料工程平臺,旨在促進資料和後設資料編排的各個方面。Hop 可讓您專注於您試圖解決的問題,而不會受到技術的阻礙。簡單的任務應該是容易的,複雜的任務需要成為可能。
Hop 是一個開源資料整合工具,它是 Pentaho Data Integration (PDI) 或 Kettle 的一個分支(2019年晚期)。它提供了一種視覺化開發工具,對於那些喜歡在不編寫任何程式碼的情況下構建管道的人來說,它可以提高開發人員的工作效率並減少他們的畏懼。Hop 工作流(workflow)和管道(Pipeline)可以在各種引擎上執行,包括其自己的本機 Hop 引擎、Spark、Flink、Google Dataflow 或通過 Beam 的 AWS EMR。Hop 是最早用於構建 Apache Beam 管道的 GUI 的設計。
Hop GUI:是用於構建管道Pipeline(Kettle: 轉換tranformation)和工作流workflow(Kettle作業job)的圖形介面編輯器。它允許在不編寫任何程式碼的情況下構建複雜的 ETL(提取轉換和載入)作業。它提供了一個拖放介面,允許創作、編輯、執行或偵錯管道或工作流。
Hop Run:是一個獨立的 CLI 實用程式,可用於執行管道和工作流。
Hop Server:是一個輕量級的 Web 容器,允許在遠端伺服器上執行管道和工作流。可以部署在多個伺服器上。它還提供了一個 REST API 用來遠端呼叫工作流和管道。
Hop Conf:是一個命令列工具,用於管理 Hop 設定的各個方面:專案、環境、雲設定等
Hop Encrypt:是一個命令列工具,用於混淆或加密純文字密碼以用於 XML、密碼或後設資料檔案。確保同時複製密碼加密字首以指示密碼的混淆性質。然後,Hop將能夠區分常規純文字密碼和混淆密碼。
Hop Search:是一個命令列工具,用於搜尋特定專案或環境中可用的所有後設資料。
Hop Import:是一個命令列工具,用於將 PDI/Kettle 作業和轉換匯入到 Apache Hop 中。Hop Import所做的不僅僅是從作業到工作流和轉換到管道的程式碼轉換:資料庫連線被轉換為Apache Hop rdbms連線,變數被解析和匯入,所有內容都捆綁到一個完整的Apache Hop專案中。
Hop Translator:是一個GUI工具,允許非技術使用者用他們的母語翻譯Hop。
Hop 中三個重要元件:Hop GUI、Hop Run、Hop Server
到目前為止,後設資料是所有 Hop 中最重要的概念。我們將在下面介紹的每個專案都定義為後設資料。Hop 與資料架構中其他元件之間的所有互動都是通過後設資料完成的。後設資料是 Hop 中一切的核心。
管道是轉換的集合,通過躍點連線。管道中的所有轉換並行執行。
工作流是通過躍點連線的操作集合。預設情況下,工作流中的所有操作都按順序執行。
專案是躍點程式碼和設定的邏輯集合。環境包含特定於環境的(例如dev,uat,prd)後設資料。
官方介紹:Hop Concepts :: Apache Hop
安裝apache Hop 在Windows環境下需要安裝Java JDK11
官方介紹:Apache Hop requirements, installation and configuration :: Apache Hop