數(shù)據(jù)分析ETL概要(Kettle-PDI在win系統(tǒng)下的安裝)

這里就作個記錄吧。特別是數(shù)據(jù)轉(zhuǎn)換時,包括預(yù)處理,清洗,校驗等流程,還有高階的維度,聚合等。

ETL基礎(chǔ)概念 - 背景

v2-39cc58f92dfbb6928f4bbf28431f4538_r.jpg

隨著企業(yè)的發(fā)展,各業(yè)務(wù)線、產(chǎn)品線、部門都會承建各種信息化系統(tǒng)方便開展自己的業(yè)務(wù)。隨著信息化建設(shè)的不斷深入,由于業(yè)務(wù)系統(tǒng)之間各自為政、相互獨(dú)立造成的數(shù)據(jù)孤島”現(xiàn)象尤為普遍,業(yè)務(wù)不集成、流程不互通、數(shù)據(jù)不共享。這給企業(yè)進(jìn)行數(shù)據(jù)的分析利用、報表開發(fā)、分析挖掘等帶來了巨大困難。
在此情況下,為了實現(xiàn)企業(yè)全局?jǐn)?shù)據(jù)的系統(tǒng)化運(yùn)作管理(信息孤島、數(shù)據(jù)統(tǒng)計、數(shù)據(jù)分析、數(shù)據(jù)挖掘) ,為DSS(決策支持系統(tǒng))、BI(商務(wù)智能)、經(jīng)營分析系統(tǒng)等深度開發(fā)應(yīng)用奠定基礎(chǔ),挖掘數(shù)據(jù)價值 ,企業(yè)會開始著手建立數(shù)據(jù)倉庫,數(shù)據(jù)中臺。將相互分離的業(yè)務(wù)系統(tǒng)的數(shù)據(jù)源整合在一起,建立一個統(tǒng)一的數(shù)據(jù)采集、處理、存儲、分發(fā)、共享中心。


v2-3bf0345346095cb277f091c87e7e6be4_720w.png

v2-dbc1495cdedda4c9561db354f606dc09_720w.png

一、 數(shù)據(jù)的抽取(Extract)

這一部分需要在調(diào)研階段做大量的工作,首先要搞清楚數(shù)據(jù)是從幾個業(yè)務(wù)系統(tǒng)中來,各個業(yè)務(wù)系統(tǒng)的數(shù)據(jù)庫服務(wù)器運(yùn)行什么DBMS,是否存在手工數(shù)據(jù),手工數(shù)據(jù)量有多大,是否存在非結(jié)構(gòu)化的數(shù)據(jù)等等,當(dāng)收集完這些信息之后才可以進(jìn)行數(shù)據(jù)抽取的設(shè)計。

1、對于與存放DW的數(shù)據(jù)庫系統(tǒng)相同的數(shù)據(jù)源處理方法

這一類數(shù)據(jù)源在設(shè)計上比較容易。一般情況下,DBMS(SQLServer、Oracle)都會提供數(shù)據(jù)庫鏈接功能,在DW數(shù)據(jù)庫服務(wù)器和原業(yè)務(wù)系統(tǒng)之間建立直接的鏈接關(guān)系就可以寫Select 語句直接訪問。

2、對于與DW數(shù)據(jù)庫系統(tǒng)不同的數(shù)據(jù)源的處理方法

對于這一類數(shù)據(jù)源,一般情況下也可以通過ODBC的方式建立數(shù)據(jù)庫鏈接——如SQL Server和Oracle之間。如果不能建立數(shù)據(jù)庫鏈接,可以有兩種方式完成,一種是通過工具將源數(shù)據(jù)導(dǎo)出成.txt或者是.xls文件,然后再將這些源系統(tǒng)文件導(dǎo)入到ODS中。另外一種方法是通過程序接口來完成。

3、對于文件類型數(shù)據(jù)源(.txt,.xls),可以培訓(xùn)業(yè)務(wù)人員利用數(shù)據(jù)庫工具將這些數(shù)據(jù)導(dǎo)入到指定的數(shù)據(jù)庫,然后從指定的數(shù)據(jù)庫中抽取?;蛘哌€可以借助工具實現(xiàn)。

4、增量更新的問題

對于數(shù)據(jù)量大的系統(tǒng),必須考慮增量抽取。一般情況下,業(yè)務(wù)系統(tǒng)會記錄業(yè)務(wù)發(fā)生的時間,我們可以用來做增量的標(biāo)志,每次抽取之前首先判斷ODS中記錄最大的時間,然后根據(jù)這個時間去業(yè)務(wù)系統(tǒng)取大于這個時間所有的記錄。利用業(yè)務(wù)系統(tǒng)的時間戳,一般情況下,業(yè)務(wù)系統(tǒng)沒有或者部分有時間戳。

二、數(shù)據(jù)的清洗轉(zhuǎn)換(Cleaning、Transform)

一般情況下,數(shù)據(jù)倉庫分為ODS、DW兩部分。通常的做法是從業(yè)務(wù)系統(tǒng)到ODS做清洗,將臟數(shù)據(jù)和不完整數(shù)據(jù)過濾掉,在從ODS到DW的過程中轉(zhuǎn)換,進(jìn)行一些業(yè)務(wù)規(guī)則的計算和聚合。

1、 數(shù)據(jù)清洗

數(shù)據(jù)清洗的任務(wù)是過濾那些不符合要求的數(shù)據(jù),將過濾的結(jié)果交給業(yè)務(wù)主管部門,確認(rèn)是否過濾掉還是由業(yè)務(wù)單位修正之后再進(jìn)行抽取。

不符合要求的數(shù)據(jù)主要是有不完整的數(shù)據(jù)、錯誤的數(shù)據(jù)、重復(fù)的數(shù)據(jù)三大類。

(1)不完整的數(shù)據(jù):這一類數(shù)據(jù)主要是一些應(yīng)該有的信息缺失,如供應(yīng)商的名稱、分公司的名稱、客戶的區(qū)域信息缺失、業(yè)務(wù)系統(tǒng)中主表與明細(xì)表不能匹配等。對于這一類數(shù)據(jù)過濾出來,按缺失的內(nèi)容分別寫入不同Excel文件向客戶提交,要求在規(guī)定的時間內(nèi)補(bǔ)全。補(bǔ)全后才寫入數(shù)據(jù)倉庫。

(2)錯誤的數(shù)據(jù):這一類錯誤產(chǎn)生的原因是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸入后沒有進(jìn)行判斷直接寫入后臺數(shù)據(jù)庫造成的,比如數(shù)值數(shù)據(jù)輸成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面有一個回車操作、日期格式不正確、日期越界等。這一類數(shù)據(jù)也要分類,對于類似于全角字符、數(shù)據(jù)前后有不可見字符的問題,只能通過寫SQL語句的方式找出來,然后要求客戶在業(yè)務(wù)系統(tǒng)修正之后抽取。日期格式不正確的或者是日期越界的這一類錯誤會導(dǎo)致ETL運(yùn)行失敗,這一類錯誤需要去業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫用SQL的方式挑出來,交給業(yè)務(wù)主管部門要求限期修正,修正之后再抽取。

(3)重復(fù)的數(shù)據(jù):對于這一類數(shù)據(jù)——特別是維表中會出現(xiàn)這種情況——將重復(fù)數(shù)據(jù)記錄的所有字段導(dǎo)出來,讓客戶確認(rèn)并整理。

數(shù)據(jù)清洗是一個反復(fù)的過程,不可能在幾天內(nèi)完成,只有不斷的發(fā)現(xiàn)問題,解決問題。對于是否過濾,是否修正一般要求客戶確認(rèn),對于過濾掉的數(shù)據(jù),寫入Excel文件或者將過濾數(shù)據(jù)寫入數(shù)據(jù)表,在ETL開發(fā)的初期可以每天向業(yè)務(wù)單位發(fā)送過濾數(shù)據(jù)的郵件,促使他們盡快地修正錯誤,同時也可以做為將來驗證數(shù)據(jù)的依據(jù)。數(shù)據(jù)清洗需要注意的是不要將有用的數(shù)據(jù)過濾掉,對于每個過濾規(guī)則認(rèn)真進(jìn)行驗證,并要用戶確認(rèn)。

2、 數(shù)據(jù)轉(zhuǎn)換

數(shù)據(jù)轉(zhuǎn)換的任務(wù)主要進(jìn)行不一致的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)粒度的轉(zhuǎn)換,以及一些商務(wù)規(guī)則的計算。

(1)不一致數(shù)據(jù)轉(zhuǎn)換:這個過程是一個整合的過程,將不同業(yè)務(wù)系統(tǒng)的相同類型的數(shù)據(jù)統(tǒng)一,比如同一個供應(yīng)商在結(jié)算系統(tǒng)的編碼是XX0001,而在CRM中編碼是YY0001,這樣在抽取過來之后統(tǒng)一轉(zhuǎn)換成一個編碼。

(2)數(shù)據(jù)粒度的轉(zhuǎn)換:業(yè)務(wù)系統(tǒng)一般存儲非常明細(xì)的數(shù)據(jù),而數(shù)據(jù)倉庫中數(shù)據(jù)是用來分析的,不需要非常明細(xì)的數(shù)據(jù)。一般情況下,會將業(yè)務(wù)系統(tǒng)數(shù)據(jù)按照數(shù)據(jù)倉庫粒度進(jìn)行聚合。

(3)商務(wù)規(guī)則的計算:不同的企業(yè)有不同的業(yè)務(wù)規(guī)則、不同的數(shù)據(jù)指標(biāo),這些指標(biāo)有的時候不是簡單的加加減減就能完成,這個時候需要在ETL中將這些數(shù)據(jù)指標(biāo)計算好了之后存儲在數(shù)據(jù)倉庫中,以供分析使用。


v2-591ef97785d5e1d489e861fad8abfa84_720w.png
v2-0bd9d7ad2eec0e5553cf948ce8dbf97b_720w.png

三,數(shù)據(jù)加載

數(shù)據(jù)拉取,清洗完之后,就需要展示了。一般是把清洗好的數(shù)據(jù)加載到mysql中,然后在各系統(tǒng)中使用,或者使用Tableau直接給相關(guān)人員展示

ETL相關(guān)工具

ELT相關(guān)的工具有很多,這里只列舉一些常用的,而且各公司的技術(shù)原型也不一樣,就需要根據(jù)實際情況來選擇

數(shù)據(jù)抽取工具:

kafka
flume
sync

數(shù)據(jù)清洗

hive/tez
pig/tez
storm
spark

其它工具

數(shù)據(jù)存儲:hadoop、hbase,ES、redis
任務(wù)管理:azkaban、oozie
數(shù)據(jù)同步:datax、sqoop


v2-5971199bbd22bc1f388dcd9a4c506300_r.jpg
v2-2f58a59a29a4d6880aa41b50f56b35ee_r.jpg

PDI-Pentaho Data Integration (PDI,Kettle)在win系統(tǒng)的安裝和運(yùn)行

2022-03-21 10_07_44-data-integration.png

2022-03-21 10_07_27-MessageCenterUI.png
?著作權(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)容