關於數據分析,你需要知道的ETL基礎知識

2020-12-25 DataHunter

信息是現代企業的重要資源,是企業運用科學管理、決策分析的基礎。據統計,數據量每經過2-3年時間就會成倍增長,這些數據蘊含著巨大的商業價值,而企業所關注的通常只佔總數據量的2%~4%左右。因此,企業仍然沒有最大化地利用已存在的數據資源,以至於浪費了更多的時間和資金,也失去制定關鍵商業決策的最佳契機。

於是,企業如何通過各種技術手段,並把數據轉換為信息、知識,已經成了提高其核心競爭力的關鍵,其中的數據處理在大數據的生態中始終處於不可缺少的地位,因為數據處理的時效性,準確性直接影響數據的分析與挖掘,分析的最終結果影響業務的營銷與收入。

今天DataHunter數獵哥就來說說一種重要的數據處理手段ETL(Extract-Transform-Load)。

一、ETL發展的歷史背景

隨著企業的發展,各業務線、產品線、部門都會承建各種信息化系統方便開展自己的業務。隨著信息化建設的不斷深入,由於業務系統之間各自為政、相互獨立造成的數據孤島」現象尤為普遍,業務不集成、流程不互通、數據不共享。這給企業進行數據的分析利用、報表開發、分析挖掘等帶來了巨大困難。

在此情況下,為了實現企業全局數據的系統化運作管理(信息孤島、數據統計、數據分析、數據挖掘) ,為DSS(決策支持系統)、BI(商務智能)、經營分析系統等深度開發應用奠定基礎,挖掘數據價值 ,企業會開始著手建立數據倉庫,數據中臺。將相互分離的業務系統的數據源整合在一起,建立一個統一的數據採集、處理、存儲、分發、共享中心,從而使公司的成員能夠從不同業務部門查看綜合數據,而這個過程中使用的數據處理方法之一就是ETL。

ETL是數據中心建設、BI分析項目中不可或缺的環節。各個業務系統中分布的、異構的數據源,經過ETL過程的數據抽取、轉換,最終存儲到目標資料庫或者數據倉庫,為上層BI數據分析,或其他業務功能做數據支撐。

二、什麼是ETL

ETL,Extract-Transform-Load的縮寫,是將業務系統的數據經過抽取、清洗轉換之後加載到數據倉庫的過程。ETL是數據集成的第一步,也是構建數據倉庫最重要的步驟,目的是將企業中的分散、零亂、標準不統一的數據整合到一起,為企業的決策提供分析依據。ETL一詞較常用在數據倉庫,但其對象並不限於數據倉庫。

舉個例子,某電商公司分析人員根據訂單數據進行用戶特徵分析。這時需要基於訂單數據,計算一些相應的分析指標,如每個用戶的消費頻次,銷售額最大的單品,用戶復購時間間隔等,這些指標都要通過計算轉換得到。

三、ETL的流程

ETL如同它代表的三個英文單詞,涉及三個獨立的過程:抽取、轉換和加載。工作流程往往作為一個正在進行的過程來實現,各模塊可靈活進行組合,形成ETL處理流程。

1.數據抽取

數據抽取指的是從不同的網絡、不同的操作平臺、不同的資料庫和數據格式、不同的應用中抽取數據的過程。目標源可能包括ERP、CRM和其他企業系統,以及來自第三方源的數據。

不同的系統傾向於使用不同的數據格式,在這個過程中,首先需要結合業務需求確定抽取的欄位,形成一張公共需求表頭,並且資料庫欄位也應與這些需求欄位形成一一映射關係。這樣通過數據抽取所得到的數據都具有統一、規整的欄位內容,為後續的數據轉換和加載提供基礎,具體步驟如下:

①確定數據源,需要確定從哪些源系統進行數據抽取

②定義數據接口,對每個源文件及系統的每個欄位進行詳細說明

③確定數據抽取的方法:是主動抽取還是由源系統推送?是增量抽取還是全量抽取?是按照每日抽取還是按照每月抽取?

2.數據轉換

數據轉換實際上還包含了數據清洗的工作,需要根據業務規則對異常數據進行清洗,主要將不完整數據、錯誤數據、重複數據進行處理,保證後續分析結果的準確性。

數據轉換就是處理抽取上來的數據中存在的不一致的過程。數據轉換一般包括兩類:第一類:數據名稱及格式的統一,即數據粒度轉換、商務規則計算以及統一的命名、數據格式、計量單位等;第二類:數據倉庫中存在源資料庫中可能不存在的數據,因此需要進行欄位的組合、分割或計算。主要涉及以下幾個方面:

①空值處理:可捕獲欄位空值,進行加載或替換為其他含義數據,或數據分流問題庫

②數據標準:統一元數據、統一標準欄位、統一欄位類型定義

③數據拆分:依據業務需求做數據拆分,如身份證號,拆分區劃、出生日期、性別等

④數據驗證:時間規則、業務規則、自定義規則

⑤數據替換:對於因業務因素,可實現無效數據、缺失數據的替換

⑥數據關聯:關聯其他數據或數學,保障數據完整性

3.數據加載

數據加載的主要任務是將經過清洗後的乾淨的數據集按照物理數據模型定義的表結構裝入目標數據倉庫的數據表中,如果是全量方式則採用LOAD方式,如果是增量則根據業務規則MERGE進資料庫,並允許人工幹預,以及提供強大的錯誤報告、系統日誌、數據備份與恢復功能。整個操作過程往往要跨網絡、跨操作平臺。

在實際的工作中,數據加載需要結合使用的資料庫系統(Oracle、Mysql、Spark、Impala等),確定最優的數據加載方案,節約CPU、硬碟IO和網絡傳輸資源。

四、ETL與ELT有什麼區別

ETL架構按其字面含義理解就是按照E-T-L這個順序流程進行處理的架構:先抽取、然後轉換、完成後加載到目標資料庫中。

在ETL架構中,數據的流向是從源數據流到ETL工具,ETL工具是一個單獨的數據處理引擎,一般會在單獨的硬體伺服器上,實現所有數據轉化的工作,然後將數據加載到目標數據倉庫中。如果要增加整個ETL過程的效率,則只能增強ETL工具伺服器的配置,優化系統處理流程(一般可調的東西非常少)。

ELT架構則把「L」這一步工作提前到「T」之前來完成:先抽取、然後加載到目標資料庫中、在目標資料庫中完成轉換操作。在ELT架構中,ELT只負責提供圖形化的界面來設計業務規則,數據的整個加工過程都在目標和源的資料庫之間流動,ELT協調相關的資料庫系統來執行相關的應用,數據加工過程既可以在源資料庫端執行,也可以在目標數據倉庫端執行(主要取決於系統的架構設計和數據屬性)。當ETL過程需要提高效率,則可以通過對相關資料庫進行調優,或者改變執行加工的伺服器就可以達到。

ELT架構的特殊優勢:①ELT主要通過資料庫引擎來實現系統的可擴展性;②ELT可以保持所有的數據始終在資料庫當中,避免數據的加載和導出,從而保證效率,提高系統的可監控性;③ELT可以根據數據的分布情況進行並行處理優化,並可以利用資料庫的固有功能優化磁碟I/O;④ELT的可擴展性取決於資料庫引擎和其硬體伺服器的可擴展性;⑤通過對相關資料庫進行性能調優,ELT過程獲得3到4倍的效率提升一般不是特別困難。

(1)當您想要執行複雜的計算時,ETL工具比數據倉庫或數據池更有效

(2)如果要在加載到目標存儲之前進行大量數據清理。ETL是一種更好的解決方案,因為您不會將不需要的數據移動到目標。

(3)當您僅使用結構化數據或傳統結構化數據倉庫時。ETL工具通常最有效地將結構化數據從一個環境移動到另一個環境。

(4)當你想要擴展補充數據時。如果要在將數據移動到目標存儲時擴展補充數據,則需要使用ETL工具。例如,添加時間戳。

五、如何才能做好ETL

1.數據抽取設計

數據的抽取需要在調研階段做大量工作,要搞清楚以下幾個問題:數據是從幾個業務系統中來?各個業務系統的資料庫伺服器運行什麼DBMS?是否存在手工數據,手工數據量有多大?是否存在非結構化的數據?等等類似問題,當收集完這些信息之後進行數據抽取的設計。常見的數據抽取設計方式有四種:

(1)與存放DW的資料庫系統相同的數據源處理方法

這一類數源在設計比較容易,一般情況下,DBMS(包括SQLServer,Oracle)都會提供資料庫連結功能,在DW資料庫伺服器和原業務系統之間建立直接的連結關係就可以寫Select 語句直接訪問。

(2)與DW資料庫系統不同的數據源的處理方法

這一類數據源一般情況下也可以通過ODBC的方式建立資料庫連結,如SQL Server和Oracle之間。如果不能建立資料庫連結,可以有兩種方式完成,一種是通過工具將源數據導出成.txt或者是.xls文件,然後再將這些源系統文件導入到ODS中。另外一種方法通過程序接口來完成。

(3)對於文件類型數據源(.txt,.xls)

可以培訓業務人員利用資料庫工具將這些數據導入到指定的資料庫,然後從指定的資料庫抽取。或者可以藉助工具實現,如SQL SERVER 2005 的SSIS服務的平面數據源和平面目標等組件導入ODS中去。

(4)增量更新問題

對於數據量大的系統,必須考慮增量抽取。一般情況,業務系統會記錄業務發生的時間,可以用作增量的標誌,每次抽取之前首先判斷ODS中記錄最大的時間,然後根據這個時間去業務系統取大於這個時間的所有記錄。利用業務系統的時間戳,一般情況下,業務系統沒有或者部分有時間戳。

2.數據清洗處理規範

不符合要求的數據主要有不完成數據(缺失值)、錯誤數據(異常值)、重複數據、不同類型需歸一化處理數據幾類。幾類數據的處理方法如下:

缺失值:不完整的數據,其特徵是是一些應該有的信息缺失,如供應商的名稱,分公司的名稱,客戶的區域信息缺失、業務系統中主表與明細表不能匹配等。需要將這一類數據過濾出來,按缺失的內容分別採取定(範圍)刪(欄位)補(數據)。

定範圍:哪些欄位缺失,缺失範圍如何,缺失欄位的重要性如何?刪欄位:刪數據的判斷,a\對業務清晰的判斷,b\「有心殺賊,無力回天」缺失數據太多。這時候可以看看是否有其他數據可以彌補。補數據:就是補充缺失值。這裡有三種補數據的方式:A、業務知識驚訝填充;B、使用均值、中位數、眾數填充;C、使用其他渠道補充,如身份證前6位是地區=手機號歸屬地。補全後才寫入數據倉庫。

異常值:產生原因是業務系統不夠健全,在接收輸入後沒有進行判斷直接寫入後臺資料庫造成的,比如數值數據輸成全形數字字符、字符串數據後面有一個回車、日期格式不正確、日期越界等。這一類數據也要分類,對於類似於全形字符、數據前後有不面見字符的問題只能寫SQL的方式找出來,然後要求客戶在業務系統修正之後抽取;日期格式不正確的或者是日期越界的這一類錯誤會導致ETL運行失敗,這一類錯誤需要去業務系統資料庫用SQL的方式挑出來,交給業務主管部門要求限期修正,修正之後再抽取。

重複數據:特別是維表中比較常見,將重複的數據的記錄所有欄位導出來,讓客戶確認並整理。

數據歸一化:歸一化的問題,就是將絕對數變成相對數的問題。因為不同維度的絕對數是沒有可比性的,這時候需要將絕對數轉化成相對一個標準的相對數。那如何進行歸一化處理呢?三種方式,A、最值歸一化、均值方差歸一化、非線性歸一化。

數據清洗是一個反覆的過程,不可能在幾天內完成,只有不斷的發現問題,解決問題。對於是否過濾、是否修正一般要求客戶確認;對於過濾掉的數據,寫入Excel文件或者將過濾數據寫入數據表,在ETL開發的初期可以每天向業務單位發送過濾數據的郵件,促使他們儘快的修正錯誤,同時也可以作為將來驗證數據的依據。數據清洗需要注意的是不要將有用的數據過濾掉了,對於每個過濾規則認真進行驗證,並要用戶確認才行。

3.數據轉換處理規範

數據轉換的任務主要是進行不一致的數據轉換、數據粒度的轉換和一些商務規則的計算。

(1)不一致數據轉換,這個過程是一個整合的過程,將不同業務系統的相同類型的數據統一,比如同一個供應商在結算系統的編碼是XX0001,而在CRM中編碼是YY0001,這樣在抽取過來之後統一轉換成一個編碼。

(2)數據粒度的轉換,業務系統一般存儲非常明細的數據,而數據倉庫中的數據是用來分析的,不需要非常明細的數據,會將業務系統數據按照數據倉庫粒度進行聚合。一般數據轉換有離散化和屬性構造兩種方式。離散化主要分為簡單離散、分桶離散、聚類離散、回歸平滑四類,屬性構造分為特徵工程和隨意構造後篩選。

(3)商務規則的計算,不同的企業有不同的業務規則,不同的數據指標,這些指標有的時候不是簡單的加加減減就能完成,這個時候需要在ETL中將這些數據指標計算好了之後存儲在數據倉庫中,供分析使用。

4.ETL日誌與警告發送

(1)ETL日誌

記錄日誌的目的是隨時可以知道ETL運行情況,如果出錯了,出錯在那裡。

ETL日誌分為三類。①執行過程日誌,是在ETL執行過程中每執行一步的記錄,記錄每次運行每一步驟的起始時間,影響了多少行數據,流水帳形式。②是錯誤日誌,當某個模塊出錯的時候需要寫錯誤日誌,記錄每次出錯的時間,出錯的模塊以及出錯的信息等。③日誌是總體日誌,只記錄ETL開始時間,結束時間是否成功信息。

如果使用ETL工具,工具會自動產生一些日誌,這一類日誌也可以作為ETL日誌的一部分。

(2)警告發送

ETL出錯了,不僅要寫ETL出錯日誌而且要向系統管理員發送警告,發送警告的方式有多種,常用的就是給系統管理員發送郵件,並附上錯誤信息,便於管理員排查。

六、小結

在這裡涉及到ETL中,我們只要有一個清晰的認識,它不是想像中的簡單一蹴而就,在實際的過程,你可以會遇到各種各樣的問題,甚至是部門之間溝通的問題。出現以上問題時,可以和團隊小夥伴或者業務側一起制定解決方案,不斷完善,只有這樣才能保證我們的業務分析結果是準確的,才能指導公司做出正確的決策。

*參考資料:

【1】《數據分析你需要知道的操作:ETL和ELT》小黎子數據分析

【2】《ETL基礎知識,看完這一篇應該夠了!》 單一色調 JAVA日知錄

【3】《大數據之—ETL設計詳解》初一有話說

相關焦點

  • 商務智能軟體FineBI的ETL處理
    ETL轉換是指對分布的、異構數據源中的數據,比如說關係數據等底層數據進行一定的轉換,然後將轉換後的資料庫保存在中間層中,成為數據分析的基礎。下面將通過商務智能軟體FineBI介紹。比如說我們想要基於業務包外部的數據表添加一個ETL轉換表至BIdemo業務包中,那麼該如何選擇外部數據表呢?
  • 用於數據分析的各類主流ETL 工具比較,哪種最適合你
    用於數據分析的各類主流ETL 工具比較,哪種最適合你 工程師飛燕 發表於 2018-06-23 11:25:00 數據提取、轉換與加載(ETL,Extract-Transform-Load
  • 數據分析的知識基礎
    二、假設及其驗證假設(Hypothesis)是關於總體的陳述,是指可被檢驗的針對被觀察的現象所做的預測,這樣的預測以理論的建構及被假定存在的建構間的關係為基礎。指向性假設是指研究人員對資料分析結果將表明,兩種實驗組中的哪一種會給研究結果帶來較高量值的期待;虛無性假設知識在被研究的變量之間不存在任何關係,或表達不同的實驗處理並不會帶來任何差異,不一定反映人們的期待。
  • 商務智能軟體FineBI的ETL數據集
    ETL數據集就是經過ETL處理之後添加進來的數據表,如:新增公式列,join,union等操作,這樣加進來的表前面會有「etl」符號作為標識。下面將通過商務智能軟體FineBI進行介紹。添加ETL數據集打開BIDemo業務包,點擊+ETL,進入添加ETL表界面從數據連接bidemo中選擇銷售活動數據表,點擊下一步進入表數據設置頁面,在該頁面可以對新加表進行ETL處理。經過ETL處理之後,點擊保存可以看到,一張新的銷售活動經過ETL處理的表被加進了業務包。
  • 數據科學家是如何不用ETL工具進行分析數據的?
    圖源:unsplash數據科學家和數據分析師經常需要回答業務問題,常常需要臨時進行分析或創建模型,以應用到公司的工作流程中。要進行分析,數據科學團隊首先需要訪問來自多個應用程式和業務流程的高質量數據,你要把數據從a點移到b點,通常通過自動化過程實現——抽取、轉換、加載或ETL。一般而言,ETL會將數據加載到某種形式的數據倉庫,以便於訪問。但是,ETL和數據倉庫存在一個主要問題。ETL需要大量的編碼,專門知識和維護。
  • 數據分析必備——Excel基礎知識
    大數據時代,數據分析已經是每個行業成果的必經之路了,更是職場核心競爭力之一,它可以幫助我們找出真實世界的規律,輔助我們進行決策和驗證。通過數據表象,看到背後的本質,發現問題,給出解決方案。例如,分析全國銷售的業績,面對一堆雜亂無章的數據源表時,要讓銷售人員看到自己的業績情況,發現不足,及時改進。
  • 數據分析必備:概率論基礎知識
    ,而統計和概率可以說是打開數據分析大門的鑰匙,將其所涉及的必備知識串起來,對於數據分析能力的進階來說是重要的基石。一個事件的概率是比較容易計算的,但現實情況是我們需要確定事件之間的關係,是互斥、獨立還是相關? 所以,我們需要引入一些概率的計算公式。
  • 數據分析必備——統計學入門基礎知識
    數據說·夢想季 成功的關鍵在於相信自己有成功的能力。數據之路,與你同行!——數據說·夢想季 導讀:要做好數據分析,除了自身技術硬以及數據思維靈活外,還得學會必備的統計學基礎知識!因此,統計學是數據分析必須掌握的基礎知識,即通過搜索、整理、分析、描述數據等手段,以達到推斷所測對象的本質,甚至預測對象未來的一門綜合性科學。
  • hadoop與數據挖掘的關係_區別_哪個好
    為後期分析做基礎 - (5)使用HQL實現業務指標分析,和用戶畫像分析,將結果存在mysql中。 供web前臺使用 - 第三階段(大規模訂單即席查詢,和多維度查詢) - (1)用戶訂單入oracle資料庫, - (2)通過sqoop把數據導入hadoop上。
  • 學習數據分析,必備的數學知識是啥?
    如果你已經工作,數據分析更是你急需學習的技能,提高效率、升職加薪就靠它啦。 如果說數據分析需要什麼數學基礎,那統計學應該是涉及最多的了,但不需要非常深入,因為大多數數據分析用到的無非是統計量、數據分布等基礎知識。
  • 【入門】數據分析必備——統計學入門基礎知識
    數據之路,與你同行!——數據說·夢想季導讀:要做好數據分析,除了自身技術硬以及數據思維靈活外,還得學會必備的統計學基礎知識!因此,統計學是數據分析必須掌握的基礎知識,即通過搜索、整理、分析、描述數據等手段,以達到推斷所測對象的本質,甚至預測對象未來的一門綜合性科學。統計學用到了大量的數學及其它學科的專業知識,其應用範圍幾乎覆蓋了社會科學和自然科學的各個領域,而在數據量極大的網際網路領域也不例外,因此紮實的統計學基礎是一個優秀的數據人必備的技能。
  • 數據分析必備的統計學基礎知識
    數據分析師利用數據思維做數據分析時,一般需要具備統計學的基礎知識,此外,在工作後,筆者才發現Excel是做數據分析的一項強大工具,之前有一種錯誤的認識覺得
  • 數據分析必備——統計學入門基礎知識 - 人人都是產品經理
    編輯導語:不論在什麼崗位,都要懂得本崗位的基礎知識,打牢基礎後面才能穩步發展;數據分析也是如此,數據分析必須要掌握統計學的基礎知識;本文是作者分享的關於統計學入門基礎的知識,我們一起來學習一下吧。要做好數據分析,除了自身技術硬以及數據思維靈活外,還得學會必備的統計學基礎知識!
  • 數據分析必備——SQL基礎知識進階版1.0
    ——數據說·夢想季 導讀:網際網路發展給工程師們留下了很多寶貴的經驗,同時,工具和使用的水平是階段性進階的。前面我們講述了《數據分析必備——SQL入門基礎知識》,今天我們來進行SQL的進階學習,學習表與表之間的操作——join的用法。
  • 數據分析基礎:從統計學入手數據分析!
    統計學是在數據分析的基礎上,研究如何測定、收集、整理、歸納和分析反映數據數據,以便給出正確消息的科學。如果要學習數據分析,那麼紮實的統計知識是必備的。本文參考《深入淺出統計學》二 、三、 四、 五 章知識,對重點內容進行歸納總結。
  • 學習大數據需要具備哪些基礎知識,以及應該重視哪些環節
    首先,從大的知識體系結構來看,學習大數據需要具備三方面基礎,分別是數學基礎、統計學基礎和計算機基礎,選擇不同的主攻方向還需要有不同的學習側重點,比如從事大數據分析(算法)崗位需要重點學習數學和統計學知識,而從事大數據開發崗位則需要重點學習計算機知識,從當前的人才需求量來看,大數據開發領域的人才需求量更大一些
  • 關於AI,你需要知道一下基本知識
    這些新聞報導引發了關於計算機佔領世界的普遍笑話,但是將AI視為職業領域並沒有什麼可笑的。只是,這樣的事實十分之九的美國人使用AI以某種形式每天另一個服務證明,這是一個可行的職業選擇。從娛樂到交通,幾乎所有行業都使用AI,但我們仍然需要合格,熟練的專業人員。人工智慧和機器學習的解釋如果您是該領域的新手,您可能會想知道,那麼什麼是人工智慧?人工智慧是我們製造智能機器的方式。
  • 利用 Pandas 分析日誌數據
    若能將數據處理成結構化表格信息,則可便於分析各步驟的執行狀況例如起止時間、耗時,進而輔助性能與維穩性的優化。此文主要通過非結構化數據日誌文件樣例,來介紹如何利用Pandas中的技巧,完成數據從非結構化到結構化的過程。
  • 關於圖算法 & 圖分析的基礎知識概覽
    關於此書,作為市面上為數不多的面向數據科學應用的圖算法書籍,寫的比較全面系統和易懂。當然,書在細節上的提高空間還有很多。今天內容很多,坐穩~目錄圖算法 & 圖分析圖基礎知識連通圖與非連通圖未加權圖與加權圖有向圖與無向圖非循環圖和循環圖
  • Python3智能數據分析,超實用的數據預處理方法你需要知道
    (▲由Python大本營付費下載自視覺中國)作者 | 李明江/張良均/周東平/張尚佳來源 | 機械工業出版社《Python3智能數據分析快速入門》機器學習對數據集有一定的要求,這就需要在訓練之前對數據進行處理,使之符合訓練要求。