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年顺风顺水,顺颂商祺!