? ? ? ? 在我們的日常工作中,數(shù)據(jù)清洗通常是一個(gè)非常復(fù)雜和繁瑣的過程,特別在EXCEL里進(jìn)行數(shù)據(jù)清洗會(huì)顯得格外痛苦,例如對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的合并、去重、分列都需要花費(fèi)不少的時(shí)間和功夫。雖然微軟推出了power query這個(gè)厲害的清洗組件,但是M語言的門檻相對(duì)較高,一般人不易掌握。因此選擇一個(gè)簡(jiǎn)潔的ETL工具去對(duì)數(shù)據(jù)進(jìn)行清洗是一個(gè)非常好的選擇。除了可以節(jié)省大量的時(shí)間,還能以可視化的界面進(jìn)行操作,無需任何代碼便可以快速對(duì)數(shù)據(jù)進(jìn)行清洗。下面利用智分析的ETL工具,對(duì)EXCEL常見的幾種清洗方法進(jìn)行講解。
1、 合并表格
我們平時(shí)工作中總會(huì)遇到需要對(duì)兩個(gè)EXCEL表格進(jìn)行合并的情況,例如對(duì)多個(gè)門店或者分公司的數(shù)據(jù)進(jìn)行整合,如果列數(shù)都一樣的時(shí)候,用復(fù)制粘貼的方式就可以對(duì)兩個(gè)表格進(jìn)行合并,但是如果表格的列數(shù)存在不一樣的情況時(shí),我們合并表格的難度會(huì)增加,例如以下兩個(gè)表格,訂單明細(xì)表B比訂單明細(xì)表A多了一列,如果要合并這兩個(gè)表格,則需要在A表里插入一列或者把B表里多出的這一列刪除了,非常麻煩。但是用ETL工具處理就會(huì)非常迅速,以下為我用智分析的自助ETL功能對(duì)表格進(jìn)行合并的方法。
▲訂單明細(xì)表A
▲訂單明細(xì)表B
? ? ? ?第一步要做的就是先把兩份數(shù)據(jù)導(dǎo)進(jìn)智分析系統(tǒng)里,在數(shù)據(jù)連接的界面里選擇EXCEL導(dǎo)入,分別把訂單明細(xì)表A和訂單明細(xì)表B導(dǎo)進(jìn)來,并選擇保存的路徑。
? ? ? ?接下來點(diǎn)擊數(shù)據(jù)準(zhǔn)備里的自動(dòng)ETL,進(jìn)入到ETL的界面后把關(guān)系數(shù)據(jù)源拖拽到中間的展示區(qū)里,并在右邊的參數(shù)里找到兩份表格,然后鼠標(biāo)右鍵點(diǎn)擊關(guān)系數(shù)據(jù)源里的“執(zhí)行到此處”。
由于訂單明細(xì)表B有多余的字段,我們先對(duì)這個(gè)數(shù)據(jù)源進(jìn)行列選擇,把數(shù)據(jù)源預(yù)處理里的‘“列選擇”拖拽過去,并與訂單明細(xì)表B進(jìn)行相連,在輸出列的界面里,把多余的字段剔除掉,這樣便可以得到與A表字段相同的數(shù)據(jù)源。
? ? ? ?最后把“合并行”這個(gè)組件拖拽到展示區(qū)里,并把訂單明細(xì)表A和加工過的訂單明細(xì)表B進(jìn)行相連,在參數(shù)選擇里選擇所有字段,合并方式選擇并集,這樣便可以把兩個(gè)表格合并在一起了。
我們看一下輸出的結(jié)果,兩份數(shù)據(jù)源完美地結(jié)合在一起了。如果對(duì)字段更多、更復(fù)雜的數(shù)據(jù)源進(jìn)行合并,這個(gè)工具可以發(fā)揮出給力的效果。
2、 刪除重復(fù)項(xiàng)
數(shù)據(jù)源有重復(fù)項(xiàng)也是經(jīng)常會(huì)遇到的問題,在EXCEL里通常可以用刪除重復(fù)項(xiàng)的功能去對(duì)數(shù)據(jù)進(jìn)行去重處理,但是利用ETL一樣也可以對(duì)數(shù)據(jù)進(jìn)行去重。還是用上面的數(shù)據(jù)源,我們把“去除重復(fù)值”這個(gè)組件拖拽到展示區(qū)里,并與上面合并好的數(shù)據(jù)源進(jìn)行相連。
?連接好之后,在右邊的參數(shù)選擇項(xiàng)里選擇要去重的字段,然后點(diǎn)擊執(zhí)行,我們來看一下輸出的效果,兩個(gè)表格里的重復(fù)值便剔除掉了,剩下的表格都是唯一值了。
3、 分列
?在用EXCEL處理數(shù)據(jù)時(shí),經(jīng)常要對(duì)一些數(shù)據(jù)字段進(jìn)行分列,例如上圖的數(shù)據(jù)源中,我們發(fā)現(xiàn)了數(shù)據(jù)源中銷售人員這一列有多余的信息,多了銷售代表這幾個(gè)字,我們應(yīng)該怎樣把后面名字給提取出來呢?在EXCEL中可以用LEFT、RIGHT函數(shù)或者分列的方式對(duì)文本字段進(jìn)行提取,但是在ETL里一樣也可以實(shí)現(xiàn)。首先把“分列”這個(gè)組件拉拽到展示區(qū)里,并與上面的數(shù)據(jù)源進(jìn)行相連。
?在右邊的參數(shù)設(shè)置區(qū)里,我們先把需要分列的數(shù)據(jù)字段選擇好,然后在分隔符選項(xiàng)里選擇分列字段里所攜帶的分隔符,這里我們選擇“-”。
? ? ? ?我們執(zhí)行看一下執(zhí)行的效果,銷售人員這個(gè)字段被分成了兩列,并生成了新的兩個(gè)字段,完美地實(shí)現(xiàn)了分列的效果。
4、 派生字段
? ? ? ??如果要在ETL里增加新的數(shù)據(jù)字段也是沒問題的,例如上圖數(shù)據(jù)源里的訂單日期包含了日期、時(shí)分秒這些信息,但是如果要把里面的年份提取出來,應(yīng)該怎么做呢?這時(shí)我們把“派生字段”拉拽到展示區(qū)里,并與上面的數(shù)據(jù)進(jìn)行相連。
? ? ? ?在參數(shù)的設(shè)置界面里,點(diǎn)擊年份提取的函數(shù),并選擇訂單日期這個(gè)字段,點(diǎn)擊確定。
?我們看一下輸出的效果,數(shù)據(jù)源最后的一列生成了新的一列,僅有年份的信息。如果要生成其他的字段也是可以實(shí)現(xiàn)的,只需編寫表達(dá)式即可。
5、 元數(shù)據(jù)編輯
ETL還可以對(duì)數(shù)據(jù)的類型進(jìn)行更改,例如把字段調(diào)整為浮點(diǎn)型、字符串、整型或者是其他的類型。同樣的方法,我們把“元數(shù)據(jù)編輯”拉拽到展示區(qū)里,并與上面的數(shù)據(jù)源進(jìn)行相連。
? ? ? ?在元數(shù)據(jù)編輯的參數(shù)設(shè)置里,可以對(duì)數(shù)據(jù)字段的別名或者數(shù)據(jù)類型進(jìn)行設(shè)置,這個(gè)對(duì)于數(shù)據(jù)庫(kù)來說非常有用。
? ? ? ? 以上為用ETL工具對(duì)EXCEL進(jìn)行數(shù)據(jù)清洗的5個(gè)常用方法,后面還會(huì)對(duì)其他清洗方法進(jìn)行講解,敬請(qǐng)留意。