数据处理中的ETL概念
ETL概念
ETL是數(shù)據(jù)抽取(Extract)、清洗(Cleaning)、轉(zhuǎn)換(Transform)、裝載(Load)的過程。是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán),用戶從數(shù)據(jù)源抽取出所需的數(shù)據(jù),經(jīng)過數(shù)據(jù)清洗,最終按照預(yù)先定義好的數(shù)據(jù)倉庫模型,將數(shù)據(jù)加載到數(shù)據(jù)倉庫中去。
一、數(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è)計(jì)。
1、對于與存放DW的數(shù)據(jù)庫系統(tǒng)相同的數(shù)據(jù)源處理方法
這一類數(shù)據(jù)源在設(shè)計(jì)上比較容易。一般情況下,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ù)庫鏈接——如 SQLServer和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ù)庫中抽取。或者還可以借助工具實(shí)現(xiàn),如SQLServer2005的SSIS服務(wù)的平面數(shù)據(jù)源和平面目標(biāo)等組件導(dǎo)入ODS中去。
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)
一般情況下,數(shù)據(jù)倉庫分為ODS、DW兩部分。通常的做法是從業(yè)務(wù)系統(tǒng)到ODS做清洗,將臟數(shù)據(jù)和不完整數(shù)據(jù)過濾掉,在從ODS到DW的過程中轉(zhuǎn)換,進(jìn)行一些業(yè)務(wù)規(guī)則的計(jì)算和聚合。
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ù)的郵件,促使他們盡快地修正錯誤,同時也可以做為將來驗(yàn)證數(shù)據(jù)的依據(jù)。數(shù)據(jù)清洗需要注意的是不要將有用的數(shù)據(jù)過濾掉,對于每個過濾規(guī)則認(rèn)真進(jìn)行驗(yàn)證,并要用戶確認(rèn)。
三、數(shù)據(jù)轉(zhuǎn)換(Transform)
數(shù)據(jù)轉(zhuǎn)換的任務(wù)主要進(jìn)行不一致的數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)粒度的轉(zhuǎn)換,以及一些商務(wù)規(guī)則的計(jì)算。
(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ī)則的計(jì)算:
不同的企業(yè)有不同的業(yè)務(wù)規(guī)則、不同的數(shù)據(jù)指標(biāo),這些指標(biāo)有的時候不是簡單的加加減減就能完成,這個時候需要在ETL中將這些數(shù)據(jù)指標(biāo)計(jì)算好了之后存儲在數(shù)據(jù)倉庫中,以供分析使用。
四、數(shù)據(jù)加載(Load)
把數(shù)據(jù)加載至目的地,比如數(shù)據(jù)倉庫中。通常的做法是,將處理好的數(shù)據(jù)寫成特定格式(如parquet、csv等)的文件,然后再把文件掛載到指定的表分區(qū)上。也有些表的數(shù)據(jù)量很小,不會采用分區(qū)表,而是直接生成最終的數(shù)據(jù)表。
ETL開發(fā)工作流程
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-KLb3EOgR-1646220689782)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/31b825328c4043349b02b8b273a0309f~tplv-k3u1fbpfcp-zoom-1.image “image”)]
數(shù)據(jù)倉庫和ODS并存方案
經(jīng)過調(diào)研,發(fā)現(xiàn)大體上有三種解法:
1、業(yè)務(wù)數(shù)據(jù) - ODS - 數(shù)據(jù)倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-4lXHi5rY-1646220689783)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/139f20ff618c441581895a02fbeca103~tplv-k3u1fbpfcp-zoom-1.image “image”)]
優(yōu)點(diǎn):
這樣做的好處是ODS的數(shù)據(jù)與數(shù)據(jù)倉庫的數(shù)據(jù)高度統(tǒng)一;開發(fā)成本低,至少開發(fā)一次并應(yīng)用到ODS即可;可見ODS是發(fā)揮承上啟下的作用,調(diào)研阿里巴巴的數(shù)據(jù)部門也是這么實(shí)現(xiàn)的。
缺點(diǎn):
數(shù)據(jù)倉庫需要的所有數(shù)據(jù)都需要走ODS,那么ODS的靈活性必然受到影響,甚至不利于擴(kuò)展、系統(tǒng)的靈活性差
2、OB - ODS
優(yōu)點(diǎn):
結(jié)構(gòu)簡單。一般的初創(chuàng)數(shù)據(jù)分析團(tuán)隊(duì)都是類似的結(jié)構(gòu),比如我們部門就應(yīng)該歸結(jié)到這一范疇
缺點(diǎn):
這樣所有數(shù)據(jù)都?xì)w結(jié)到ODS,長期數(shù)據(jù)決策分析能力差,軟硬件成本高,模塊劃分不清晰,通用性差
3、數(shù)據(jù)倉庫和ODS并行
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-pmX9vOfT-1646220689783)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/230c070e4123457895b15e064c9b5108~tplv-k3u1fbpfcp-zoom-1.image “image”)]
可見這個模型兼顧了上面提高的各自優(yōu)點(diǎn),且便于擴(kuò)展,ODS和數(shù)據(jù)倉庫各做各的,形成優(yōu)勢互補(bǔ)!可以解決現(xiàn)在互聯(lián)網(wǎng)公司遇到的快速變化、快速開發(fā)等特點(diǎn)!特別是對于那些剛剛創(chuàng)建數(shù)據(jù)團(tuán)隊(duì),數(shù)據(jù)開發(fā)人員緊缺的公司,可以嘗試使用這個數(shù)據(jù)架構(gòu)解決問題!
Data Mart 數(shù)據(jù)集市
為了特定的應(yīng)用目的或應(yīng)用范圍,而從數(shù)據(jù)倉庫中獨(dú)立出來的一部分?jǐn)?shù)據(jù),也可稱為部門數(shù)據(jù)或主題數(shù)據(jù)(subjectarea)。在數(shù)據(jù)倉庫的實(shí)施過程中往往可以從一個部門的數(shù)據(jù)集市著手,以后再用幾個數(shù)據(jù)集市組成一個完整的數(shù)據(jù)倉庫。需要注意的就是在實(shí)施不同的數(shù)據(jù)集市時,同一含義的字段定義一定要相容,這樣再以后實(shí)施數(shù)據(jù)倉庫時才不會造成大麻煩。
總結(jié)
以上是生活随笔為你收集整理的数据处理中的ETL概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: appcan 笔记
- 下一篇: 0 公式 0 基础学习电磁兼容 — 1.