場景
雖然數(shù)據(jù)庫技術(shù)和大數(shù)據(jù)已經(jīng)廣泛使用,公司打造內(nèi)部數(shù)據(jù)平臺時,對基于關(guān)系型數(shù)據(jù)庫,或者是格式標(biāo)準(zhǔn)的文件,例如JSON,XML,CSV等數(shù)據(jù)一體化都相對容易。因?yàn)檫@些數(shù)據(jù)載體標(biāo)準(zhǔn),變化可控,易于分辨,且都有成熟的工具/包,來輔助抽取和解析。
生產(chǎn)生活中,Excel文件仍然是常見數(shù)據(jù)承載媒介。公司運(yùn)作的過程中,也會產(chǎn)生很多有價(jià)值的數(shù)據(jù),存在易于閱讀和方便傳播的Excel文件中。Excel文件沒有統(tǒng)一的格式,數(shù)據(jù)編排方式完全依賴個人的習(xí)慣和偏好,不可能被標(biāo)準(zhǔn)化。
當(dāng)想把這些數(shù)據(jù)落地存儲為公司的數(shù)據(jù)資產(chǎn)時,很難用一套通用程序來處理。雖然現(xiàn)在滿天飛各種數(shù)據(jù)中臺類產(chǎn)品,但只能解決企業(yè)內(nèi)標(biāo)準(zhǔn)化數(shù)據(jù)源(90%都是關(guān)系型數(shù)據(jù)庫)的整合問題,幾乎不涉及存儲在excel中的數(shù)據(jù),導(dǎo)致這些文件中的數(shù)據(jù)都是游離在公司數(shù)據(jù)體系之外的。
適用對象
哪些情景,或者說工作環(huán)境中有對Excel數(shù)據(jù)治理的需求呢?總結(jié)了一下大概分成四類:1. 工作業(yè)務(wù)流程接觸很多excel中的時序數(shù)據(jù)。這些文件可能是內(nèi)部產(chǎn)生的,也可能是外部產(chǎn)生的。主要依靠人閱讀的方式消費(fèi)文件,需要提升效率;?
2. 公司產(chǎn)生很多有價(jià)值的數(shù)據(jù),都在excel中,想把它數(shù)字資產(chǎn)化;?
3. 公司有一定的IT基礎(chǔ),數(shù)據(jù)架構(gòu)很完善,數(shù)據(jù)中臺基本都已成型,想打通零散的Excel線下數(shù)據(jù);?
4. 數(shù)據(jù)公司。匯聚各類細(xì)分?jǐn)?shù)據(jù)源的Excel文件,生產(chǎn)自己的EDB指標(biāo);
痛點(diǎn)
要完成上面的目標(biāo),有個痛點(diǎn)一定繞不過去,就是自由格式的Excel文件解析。 Excel傳統(tǒng)上一般有3種處理方式:
1. 格式簡單/標(biāo)準(zhǔn)
標(biāo)準(zhǔn)的二維矩陣形式,可用ETL工具直接導(dǎo)入。比如kettle,指定sheet名,數(shù)據(jù)起始的行列,preview一下數(shù)據(jù),自動識別出列的格式,生成二維表。
直接用Python中的pandas讀取也都很容易;或者Navicat都可以把直接導(dǎo)入數(shù)據(jù)庫表中。
2. 格式復(fù)雜
有兩種處理方式:
2.1 定義一個中間標(biāo)準(zhǔn)模板態(tài)(一個模板Excel)。把非標(biāo)準(zhǔn)形式的excel文件手工往這個形式轉(zhuǎn)換,后者再用程序批量處理;
2.2 對每個Excel文件的每個sheet,寫單獨(dú)的程序去解析;
即使通過上面幾種方式實(shí)現(xiàn)了,當(dāng)文件中的數(shù)據(jù)內(nèi)容、排版方式發(fā)生變化時,比如數(shù)據(jù)中間插入了一行或者一列,某個sheet改名了,單元格的指標(biāo)名稱改了等等,靠人或者程序去識別這類變化,都非常困難;文件改變后,還要對(手工)轉(zhuǎn)換過程或者代碼做相應(yīng)的修改和測試,也很耗時。
識別文件內(nèi)容變化,以及根據(jù)變化迅速調(diào)整處理邏輯,是解析的難點(diǎn)。當(dāng)然,更為重要的,是用低成本(人、時間)迅速響應(yīng)數(shù)據(jù)格式的變化。
格式自由
Excel格式因人而異,沒有標(biāo)準(zhǔn),想怎么弄就怎么弄。比如:





上面只是個別樣例,真實(shí)的情況難以窮盡,各種讓人“大開眼界”的格式都會出現(xiàn)。
治理目標(biāo)
Excel解析在很多公司和人的眼中,只是個小東西,隨便找個人,寫寫Python就能搞定的,這沒錯,但為何筆者認(rèn)為需要一個專業(yè)的Excel治理方案呢?

kettle等ETL工具,能夠處理格式標(biāo)準(zhǔn)的excel文件;最不濟(jì),找人針對一個個具體的excel樣式寫代碼,也最終可以把數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中去??尚行允怯械?,但是解決成本很貴。
Excel治理上,筆者認(rèn)為有3種段位:
1.數(shù)值入庫
將單元格讀入數(shù)據(jù)庫表中,類似Wind導(dǎo)出的EDB指標(biāo),也能保存表頭上的單位、數(shù)據(jù)來源等其他信息;
絕大部分的Excel入庫,也只是做到這一步。
2.指標(biāo)體系
能夠增補(bǔ)業(yè)務(wù)信息、豐富備注、自定義量綱等;建立表中的數(shù)值與Excel源文件的對應(yīng)關(guān)系;
3.主題域
分行業(yè)、分類型的多維數(shù)據(jù)集;根據(jù)不同業(yè)務(wù)需求能靈活生成多種表結(jié)構(gòu);在解析中涵蓋數(shù)據(jù)規(guī)劃、業(yè)務(wù)分析的邏輯,沉淀知識;
Excel治理后,應(yīng)當(dāng)能夠在數(shù)據(jù)庫中重塑原本數(shù)值,并將源文件中混亂的值列、維度列存在表單獨(dú)的列中。



這種標(biāo)準(zhǔn)格式,很容易就能被類似FineBI、Tableau等分析工具讀取和進(jìn)行多維分析。如果是算法挖掘,更加需要諸如地域、顏色、量綱、型號、品牌、渠道等不同維度的標(biāo)簽?zāi)芮宄乇唤缍ǔ鰜?/b>,算法才能進(jìn)行準(zhǔn)確和深入的學(xué)習(xí)。
在整個治理過程中,通過簡單的步驟,不但完成分布雜亂數(shù)據(jù)的ETL過程,還可從業(yè)務(wù)視角實(shí)現(xiàn)數(shù)據(jù)的融合。能夠?qū)Σ煌琒heet,甚至不同文件中具有相同屬性、維度的數(shù)據(jù)進(jìn)行靈活的聚合和再分配。將不同文件中、不同sheet中的數(shù)據(jù)進(jìn)行自定義分類,建立滿足企業(yè)級使用的表。
最終,還有一個總覽的視圖,能夠統(tǒng)一地看到所有源文件,與不同數(shù)據(jù)庫中的不同表、列之間的映射關(guān)系;數(shù)據(jù)的更新狀態(tài)、統(tǒng)計(jì)檢查結(jié)果(異常值,疑似重復(fù),缺失等)。能第一時間定位到數(shù)據(jù)異常是源頭問題,還是過程問題。
總結(jié)
Excel數(shù)據(jù)治理,不是簡單的單元格數(shù)值入庫就結(jié)束了,而是加強(qiáng)沉淀數(shù)據(jù)資產(chǎn),提升數(shù)據(jù)價(jià)值,擴(kuò)大使用范圍,加速數(shù)據(jù)傳播的優(yōu)勢,

最終從三個視角全面提升企業(yè)的數(shù)據(jù)治理水平。