Excel解析與導(dǎo)入數(shù)據(jù)庫(數(shù)據(jù)治理)

場景

雖然數(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ù)據(jù)混合,且都有預(yù)測值。A列的含義豐富,既有分類,又有不同指標(biāo),還有同比
6月和7月每個日期下面有3個指標(biāo);8月之后,每個日期就只有2個指標(biāo)了;日期是合并單元格;
水平+垂直方向組合才構(gòu)成完整的日期;A列看到的值和真實(shí)的值不同;
A,B,C三列組合為日期;日期是合并單元格;旬頻定位不到具體的日期值;
兩行組合為日期;上中旬、月(而不是下旬)混合;A列的值有層級關(guān)系;

上面只是個別樣例,真實(shí)的情況難以窮盡,各種讓人“大開眼界”的格式都會出現(xiàn)。

治理目標(biāo)

Excel解析在很多公司和人的眼中,只是個小東西,隨便找個人,寫寫Python就能搞定的,這沒錯,但為何筆者認(rèn)為需要一個專業(yè)的Excel治理方案呢?


主流方法把Excel單元格的值摳出來放進(jìn)表中并不難,但缺點(diǎn)也很明顯

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ú)的列中。


將源文件中分散的數(shù)據(jù),匯聚到寬表的不同值列和維度列上


將多個Sheet中的數(shù)據(jù),在寬表中用不同維度標(biāo)識出來


將分散在多個數(shù)據(jù)文件中,具有相似屬性的數(shù)據(jù)合并在一起;

這種標(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ù)治理水平。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容