淺談企業法人主數據的清洗方法

      12月初,頂着魔都某機場疫情的壓力,我跟同事被領導緊急召喚到集團總部,分配的任務是「清洗集團的四套統建系統中組織機構主數據,找出差別」。程序員

       剛看到這個命題的時候,腦殼瓜子是嗡嗡的,由於部門級別的組織機構數據嚴格意義上來說沒辦法算做「主數據」,由於同一個職能或類似職能的部門在各單位的叫法極可能不同,並且隨着業務的變更,部門級的變化、合併頻率要遠大於法人公司的關停並轉。最主要的是,數據量大-於咱們這種體量的單位來說,幾萬條組織機構是輕飄飄的。架構

       講到這裏,極可能有徜徉在「大數據海洋」裏的小夥伴要嘲笑咱們了,幾萬條數據那叫事兒麼?對,於PB爲計算單位的大數據而言,區區幾萬條數據着實不算什麼?可是,領導的要求是要作「精準的數據清洗」,這些數據是要做爲主鍵參與SQL計算的,不是算什麼相關性,更不是要建模。說白了,清洗後的數據要絕對的真實、可用,想簡單的作作去重、去Null是不可能了,並且都是字符串,什麼均值補空的都別合計了,難度可想而知。ide

       好在到了一看,他們第一層的需求僅僅是對「法人主數據」的清洗,一顆懸着的心終於落地了(原計劃一週後逃離魔都的想法有機會實現)。單位在作主數據項目的時候,曾明確的定義了法人主數據的概念:集團法定合併架構內的全部公司。也就是組織機構的最上級,公司的概念。雖然當時有一些參股、聯營、合營、甚至是分支機構、辦事處也被要求歸入到系統管轄的範圍內,好在當前主數據管理系統裏也就幾千條記錄,「精準的數據清洗」仍是能夠在短期內完成的。svn

----------------------------------------------------------------------------------------------------------------------------------------------函數

      接下來講明一下我和同事兩人是如何進行「純手工數據清洗」的,也算拋磚引玉,跟各位小夥伴分享和互勉,但願能共同進步:
工具

1、準備工做大數據

一、數據源獲取網站

這個比較簡單,直接張嘴要,免得ETL了,獲取到的數據都是excel。編碼

二、數據清洗工具選擇spa

基於數據量小,源數據格式固定等特色,此次選用excel。

三、版本管理

小項目,沒用svn什麼的。可是倆人針對同一數據源進行操做,仍是對每一個文檔的版本以日期+時間的方式進行命名,增強版本管理。

另外,爲三個統建系統(財務、投資、人事)的待比對數據作了三個文件夾,分別保存過程數據。一個合集文件夾,保存整合後的數據。最後命名一個「給領導」文件夾,用於彙報。

四、數據字典

本次數據清洗只保留企業法人的編碼、名稱、管理層級、上級管理單位名稱、法人層級(股權層級)、上級控股(持股)單位名稱、備註。

2、數據清洗過程

一、數據預處理

1.1 先後空格處理

很少說了,這個很是簡單。

1.2 特殊符號檢查

這裏要聲明的是,境內企業在公司名稱里加入特殊符號的狀況少之又少(感謝工商部門!),但通過信息系統和ETL的折騰,不免在獲取到的源數據裏有特殊符號的存在,要將其進行處理。境外企業不作處理,之後會單獨寫一篇文章談談境外企業的命名規範。

1.3 括號類別檢查

處理過這類數據的小夥伴必定也深有感觸,這個括號的全角和半角問題對不少函數都很不友好,除非自定義函數,不然一概將全角和半角的括號視爲不一樣。這裏批量將全部的括號統一處理爲全角。這部分數據會被打上標籤,若是名稱一致,僅僅是括號問題,列入下一步整改對象。

1.4 隱藏公式檢查

也是被折騰致使的結果,要檢查一下excel單元格里是否有隱藏公式,有就格式化便可。

1.5 數據一致性檢查

提早定義好字段和數據類型,對源數據裏的不一致類型進行格式化。

二、Null值處理

原來咱們覺得這步能夠省略,畢竟是集團統建的系統,怎麼可能會在主鍵級別的字段上出現Null值呢?不!它真的有!無論什麼緣由把,把企業法人名稱爲空的值摘錄出去,不歸入數據整合的範圍。

三、數據去重

第一步沒省略,第二步也作一下吧。結果,經過排序和函數的處理,真的有重複的企業法人,真的有!在諮詢了系統管理員和相關業務部門後,也不歸入數據整合的範圍。

四、數據比對

利用函數比對源數據和主數據中不一致的企業法人,找出差別對象,即名稱不一致的企業法人,留做數據整合用。

3、數據整合

接下來開始是比較有意(ku)思(zao)的工做了,要給全部類型的差別數據打上標籤,別問我爲何,問就是須要業務人員處理唄。

一、名稱不一致

咱們發現的第一類差別數據就是「存在的企業,但源系統名稱與主數據名稱不一致」的狀況,這類狀況分好幾種緣由:

1.1 中英文不一致

境外及中國的港、澳、臺地區一般狀況下在公司註冊的時候用的是英文名稱,而業務人員在系統內維護的時候極可能將英文翻譯了,對的,他翻譯了,並且極可能是直譯!

1.2 英文名稱縮寫或錯誤

孔乙己問過:茴香豆的茴有幾種寫法,四種吧,好像。Limited(等同於有限公司)這個詞,你們能想象到有幾種寫法麼?再加上同義的呢?

1.3 沿用了舊名稱

公司改名了,可是系統內仍是舊名稱。這個真的要看真本事了,畢竟在沒有統一社會信用代碼、鄧白氏或稅號的前提下,把兩個徹底不同名稱的單位聯繫到一塊兒,是要技術的。

二、不存在的企業法人

2.1 非企業法人

相信我,財務真的會把一筆帳款的名稱扔到企業法人主數據裏,而人事,會把@#¥%……&*()都扔進去。

2.2 名稱不全

針對某很長名字公司的某地區分支機構,極可能出現一種無奈的狀況:某AP系統的名稱字段長度爲40個字符,沒夠,給截位了。在後面的字都看不到的狀況下,業務人員生生用了好幾個月不放聲!

2.3 已註銷企業

這個好說,去國家組織機構網站查一下企業的續存狀況便可知。

4、數據解釋

我倆將整合後的數據打上標籤後,逐一與業務進行覈對,簡單的表格和可視化了一下,對每一類數據接下來的處理提出了建議,用於向公司領導彙報。

------------------------------------------------------------------------------------------------------------------------------------

       聽說,領導招咱們來以前,是罵了我一頓的,說咱們的工做作的不到位致使一些列狀況的出現。不過通過3天鏖戰,終於將清洗、整合後的數據呈如今領導面前的時候,仍是獲得了些許誇獎,也算對此前工做的一個交代。咱們並非專業的數據處理人員,是所積累的工做經驗加上負責的精神撐起了這份工做,有兩個小小的概況,藉機抒發一下:

懂業務,事半功倍

此次跟我一塊兒來的同事是項目組裏專門負責客戶、供應商和法人主數據的兄弟,老哥幹主數據工做5年多了,各類離奇複雜的狀況都見過,練就了一身的神技:見到部分英文關鍵字能八九不離十的說出該單位的中文名稱,續存情況及管理、法人層級!這爲咱們在清洗境外公司數據的時候節省了大量的時間。老哥還能根據公司的經營情況,經過各類工具網站收集到用戶數據整合的信息,這個真不是隨便抓來一個程序員就能幹的出來的,所謂程序員懂業務,誰也擋不住!

十八般武藝,要樣樣精通

不少數據分析師在面對數據清洗的時候都頭大,尤爲對於字符串級別數據的處理,對於連續性數據的泛化等問題上,能避則避。甚至我接觸到在國外工做的小夥伴跟我炫耀,他們蒐集到的數據整合性很是好,幾乎不須要任何數據清洗便可用於分析和建模。可是你們要清楚的是,以上的狀況都是有前提的,要麼你有套比較牛的系統,收集到的數據質量自己就好;要麼你有個大團隊,有專門的人給你作這個事兒。而一般狀況下,在國內以上兩種狀況都難以實現,這就須要勵志成爲數據分析師的咱們要精通跟數據相關的全部技術,並且要不斷的豐富本身,不斷的拓展技術棧,不然只能停留在簡單的「數據探索」階段,拿着不整合的數據作成報表應付交差。於數據真正價值的挖掘,於自身能力的提高都須要咱們不斷的努力提高本身,所謂十八般武藝,樣樣精通。

以上觀點僅表明我的淺薄的理解,不當之處還望指正。分享給你們,轉載請註明出處和做者。

預祝你們2021年順風順水,順頌商祺!

相關文章
相關標籤/搜索