數(shù)據(jù)倉庫系列5-ETL是什么

什么是ETL?

ETL(Extract, Transform and Load)是從不同的源系統(tǒng)中提取數(shù)據(jù),然后轉(zhuǎn)換數(shù)據(jù)(如應用計算、連接等)并最終將數(shù)據(jù)加載到數(shù)據(jù)倉庫系統(tǒng)中的過程。ETL 的完整形式是提取、轉(zhuǎn)換和加載。

很容易認為創(chuàng)建數(shù)據(jù)倉庫只是從多個來源提取數(shù)據(jù)并加載到數(shù)據(jù)倉庫的數(shù)據(jù)庫中。這與事實相去甚遠,需要復雜的 ETL 過程。ETL 過程需要來自包括開發(fā)人員、分析師、測試人員、高層管理人員在內(nèi)的各種利益相關(guān)者的積極投入,并且在技術(shù)上具有挑戰(zhàn)性。

為了保持其作為決策者工具的價值,數(shù)據(jù)倉庫系統(tǒng)需要隨著業(yè)務(wù)的變化而變化。ETL 是數(shù)據(jù)倉庫系統(tǒng)的重復活動(每天、每周、每月),需要敏捷、自動化和有據(jù)可查。

為什么需要ETL?

在組織中采用 ETL 的原因有很多:

  • 它可以幫助公司分析其業(yè)務(wù)數(shù)據(jù)以做出關(guān)鍵業(yè)務(wù)決策。
  • 事務(wù)型數(shù)據(jù)庫無法回答 ETL 示例可以回答的復雜業(yè)務(wù)問題。
  • 數(shù)據(jù)倉庫提供公共數(shù)據(jù)存儲庫
  • ETL 提供了一種將數(shù)據(jù)從各種來源移動到數(shù)據(jù)倉庫中的方法。
  • 隨著數(shù)據(jù)源的變化,數(shù)據(jù)倉庫會自動更新。
  • 精心設(shè)計和記錄的 ETL 系統(tǒng)對于數(shù)據(jù)倉庫項目的成功幾乎是必不可少的。
  • 允許驗證數(shù)據(jù)轉(zhuǎn)換、聚合和計算規(guī)則。
  • ETL 過程允許在源系統(tǒng)和目標系統(tǒng)之間比較樣本數(shù)據(jù)。
  • ETL 過程可以執(zhí)行復雜的轉(zhuǎn)換并且需要額外的區(qū)域來存儲數(shù)據(jù)。
  • ETL 有助于將數(shù)據(jù)遷移到數(shù)據(jù)倉庫。轉(zhuǎn)換為各種格式和類型以遵循一個一致的系統(tǒng)。
  • ETL 是一個預定義的過程,用于訪問和操作源數(shù)據(jù)到目標數(shù)據(jù)庫中。
  • 數(shù)據(jù)倉庫中的 ETL 為業(yè)務(wù)提供了深刻的歷史背景。
  • 它有助于提高生產(chǎn)力,因為它無需技術(shù)技能即可編碼和重復使用。

數(shù)據(jù)倉庫中的 ETL 過程

ETL 是一個 3 步過程

ETL流程

步驟 1) 提取

在 ETL 架構(gòu)的這一步中,數(shù)據(jù)從源系統(tǒng)中提取到暫存區(qū)。在暫存區(qū)進行轉(zhuǎn)換(如果有),以便源系統(tǒng)的性能不會降低。此外,如果將損壞的數(shù)據(jù)直接從源復制到數(shù)據(jù)倉庫數(shù)據(jù)庫中,回滾將是一個挑戰(zhàn)。暫存區(qū)提供了在提取的數(shù)據(jù)進入數(shù)據(jù)倉庫之前對其進行驗證的機會。

數(shù)據(jù)倉庫需要集成不同的系統(tǒng)、DBMS、硬件、操作系統(tǒng)和通信協(xié)議。來源可能包括大型機等遺留應用程序、定制應用程序、ATM 等接觸點設(shè)備、呼叫交換機、文本文件、電子表格、ERP、來自供應商、合作伙伴等的數(shù)據(jù)。

因此,在物理提取和加載數(shù)據(jù)之前,需要一個邏輯數(shù)據(jù)映射。該數(shù)據(jù)映射描述了源數(shù)據(jù)和目標數(shù)據(jù)之間的關(guān)系。

三種數(shù)據(jù)提取方法:

  1. 完全提取
  2. 部分提取 - 沒有更新通知。
  3. 部分提取 - 帶有更新通知

無論使用何種方法,提取都不應影響源系統(tǒng)的性能和響應時間。這些源系統(tǒng)是實時生產(chǎn)數(shù)據(jù)庫。任何放緩或鎖定都可能影響公司的底線。

在提取期間完成了一些驗證:

  • 將記錄與源數(shù)據(jù)協(xié)調(diào)
  • 確保沒有加載垃圾郵件/不需要的數(shù)據(jù)
  • 數(shù)據(jù)類型檢查
  • 刪除所有類型的重復/碎片數(shù)據(jù)
  • 檢查所有鑰匙是否到位

步驟 2) 轉(zhuǎn)型

從源服務(wù)器提取的數(shù)據(jù)是原始數(shù)據(jù),不能以其原始形式使用。因此,需要對其進行清理、映射和轉(zhuǎn)換。事實上,這是 ETL 過程增加價值和更改數(shù)據(jù)以生成有洞察力的 BI 報告的關(guān)鍵步驟。

它是重要的 ETL 概念之一,您可以在其中對提取的數(shù)據(jù)應用一組函數(shù)。不需要任何轉(zhuǎn)換的數(shù)據(jù)稱為直接移動傳遞數(shù)據(jù)。

在轉(zhuǎn)換步驟中,您可以對數(shù)據(jù)進行自定義操作。例如,如果用戶想要數(shù)據(jù)庫中沒有的銷售收入總和。或者,如果表中的名字和姓氏在不同的列中??梢栽诩虞d之前連接它們。

數(shù)據(jù)集成問題

以下是數(shù)據(jù)完整性問題:

  1. 同一個人的不同拼寫,如 Jon、John 等。
  2. 有多種表示公司名稱的方法,例如 Google、Google Inc.
  3. 使用不同的名稱,如克利夫蘭、克利夫蘭。
  4. 可能存在針對同一客戶的不同應用生成不同賬號的情況。
  5. 在某些數(shù)據(jù)所需的文件中仍為空白
  6. 在 POS 收集的無效產(chǎn)品作為手動輸入可能會導致錯誤。

在此階段完成驗證

  • 過濾 – 只選擇某些列加載
  • 使用規(guī)則和查找表進行數(shù)據(jù)標準化
  • 字符集轉(zhuǎn)換和編碼處理
  • 測量單位的轉(zhuǎn)換,如日期時間轉(zhuǎn)換、貨幣轉(zhuǎn)換、數(shù)字轉(zhuǎn)換等。
  • 數(shù)據(jù)閾值驗證檢查。例如,年齡不能超過兩位數(shù)。
  • 從暫存區(qū)到中間表的數(shù)據(jù)流驗證。
  • 必填字段不應留空。
  • 清潔(例如,將 NULL 映射到 0 或?qū)?Gender Male 映射到“M”和將女性映射到“F”等)
  • 將一列拆分為多列并將多列合并為一列。
  • 轉(zhuǎn)置行和列,
  • 使用查找來合并數(shù)據(jù)
  • 使用任何復雜的數(shù)據(jù)驗證(例如,如果一行中的前兩列是空的,那么它會自動拒絕處理該行)

步驟 3) 加載

將數(shù)據(jù)加載到目標數(shù)據(jù)倉庫數(shù)據(jù)庫是 ETL 過程的最后一步。在典型的數(shù)據(jù)倉庫中,需要在相對較短的時間內(nèi)(夜間)加載大量數(shù)據(jù)。因此,加載過程應該針對性能進行優(yōu)化。

在加載失敗的情況下,恢復機制應配置為從故障點重新啟動而不會丟失數(shù)據(jù)完整性。數(shù)據(jù)倉庫管理員需要根據(jù)當前的服務(wù)器性能監(jiān)控、恢復、取消加載。

加載類型:

  • 初始加載— 填充所有數(shù)據(jù)倉庫表
  • 增量負載——在需要時定期應用正在進行的更改。
  • 完全刷新 —擦除一個或多個表的內(nèi)容并重新加載新數(shù)據(jù)。

負載驗證

  • 確保關(guān)鍵字段數(shù)據(jù)既不缺失也不為空。
  • 基于目標表測試建模視圖。
  • 檢查組合值和計算的度量。
  • 維表和歷史表中的數(shù)據(jù)檢查。
  • 檢查有關(guān)加載的事實和維度表的 BI 報告。

最佳實踐 ETL 流程

以下是 ETL 流程步驟的最佳實踐:

永遠不要嘗試清理所有數(shù)據(jù):
每個組織都希望所有數(shù)據(jù)都干凈,但他們中的大多數(shù)還沒有準備好為等待或沒有準備好等待。清理所有數(shù)據(jù)只會花費太長時間,因此最好不要嘗試清理所有數(shù)據(jù)。

永遠不要清洗任何東西:
總是計劃清理一些東西,因為構(gòu)建數(shù)據(jù)倉庫的最大原因是提供更干凈、更可靠的數(shù)據(jù)。

確定清理數(shù)據(jù)的成本:
在清理所有臟數(shù)據(jù)之前,確定每個臟數(shù)據(jù)元素的清理成本很重要。

為了加速查詢處理,有輔助視圖和索引:
為了降低存儲成本,將匯總數(shù)據(jù)存儲到磁盤磁帶中。此外,需要在要存儲的數(shù)據(jù)量與其詳細使用之間進行權(quán)衡。在數(shù)據(jù)粒度級別進行權(quán)衡以降低存儲成本。

概括:

  • ETL 代表提取、轉(zhuǎn)換和加載。
  • ETL 提供了一種將數(shù)據(jù)從各種來源移動到數(shù)據(jù)倉庫中的方法。
  • 在第一步抽取中,數(shù)據(jù)從源系統(tǒng)抽取到暫存區(qū)。
  • 在轉(zhuǎn)換步驟中,對從源中提取的數(shù)據(jù)進行清理和轉(zhuǎn)換。
  • 將數(shù)據(jù)加載到目標數(shù)據(jù)倉庫是 ETL 過程的最后一步。

參考guru99

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容