您的位置:首页 > 其它

浅谈企业法人主数据的清洗方法

2020-12-28 10:05 134 查看 https://blog.51cto.com/7259056

      12月初,顶着魔都某机场疫情的压力,我跟同事被领导紧急召唤到集团总部,分配的任务是“清洗集团的四套统建系统中组织机构主数据,找出差异”。

       刚看到这个命题的时候,脑袋瓜子是嗡嗡的,因为部门级别的组织机构数据严格意义上来讲没办法算作“主数据”,因为同一个职能或相似职能的部门在各单位的叫法很可能不一样,而且随着业务的变动,部门级的变化、合并频率要远大于法人公司的关停并转。最主要的是,数据量大-于我们这种体量的单位来讲,几万条组织机构是轻飘飘的。

       讲到这里,很可能有徜徉在“大数据海洋”里的小伙伴要嘲笑我们了,几万条数据那叫事儿么?对,于PB为计算单位的大数据而言,区区几万条数据着实不算什么?但是,领导的要求是要做“精准的数据清洗”,这些数据是要作为主键参与SQL计算的,不是算什么相关性,更不是要建模。说白了,清洗后的数据要绝对的真实、可用,想简单的做做去重、去Null是不可能了,而且都是字符串,什么均值补空的都别合计了,难度可想而知。

       好在到了一看,他们第一层的需求仅仅是对“法人主数据”的清洗,一颗悬着的心终于落地了(原计划一周后逃离魔都的想法有机会实现)。单位在做主数据项目的时候,曾明确的定义了法人主数据的概念:集团法定合并架构内的所有公司。也就是组织机构的最上级,公司的概念。虽然当时有一些参股、联营、合营、甚至是分支机构、办事处也被要求纳入到系统管辖的范围内,好在当前主数据管理系统里也就几千条记录,“精准的数据清洗”还是可以在短时间内完成的。

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

      接下来说明一下我和同事两人是如何进行“纯手工数据清洗”的,也算抛砖引玉,跟各位小伙伴分享和互勉,希望能共同进步:

一、准备工作

1、数据源获取

这个比较简单,直接张嘴要,省得ETL了,获取到的数据都是excel。

2、数据清洗工具选择

基于数据量小,源数据格式固定等特点,这次选用excel。

3、版本管理

小项目,没用svn什么的。但是俩人针对同一数据源进行操作,还是对每个文档的版本以日期+时间的方式进行命名,加强版本管理。

另外,为三个统建系统(财务、投资、人事)的待比对数据做了三个文件夹,分别保存过程数据。一个合集文件夹,保存整合后的数据。最后命名一个“给领导”文件夹,用于汇报。

4、数据字典

本次数据清洗只保留企业法人的编码、名称、管理层级、上级管理单位名称、法人层级(股权层级)、上级控股(持股)单位名称、备注。

二、数据清洗过程

1、数据预处理

1.1 前后空格处理

不多说了,这个非常简单。

1.2 特殊符号检查

这里要声明的是,境内企业在公司名称里加入特殊符号的情况少之又少(感谢工商部门!),但经过信息系统和ETL的折腾,难免在获取到的源数据里有特殊符号的存在,要将其进行处理。境外企业不做处理,以后会单独写一篇文章谈谈境外企业的命名规范。

1.3 括号类别检查

处理过这类数据的小伙伴一定也深有感触,这个括号的全角和半角问题对很多函数都很不友好,除非自定义函数,否则一律将全角和半角的括号视为不同。这里批量将所有的括号统一处理为全角。这部分数据会被打上标签,如果名称一致,仅仅是括号问题,列入下一步整改对象。

1.4 隐藏公式检查

也是被折腾导致的结果,要检查一下excel单元格里是否有隐藏公式,有就格式化即可。

1.5 数据一致性检查

提前定义好字段和数据类型,对源数据里的不一致类型进行格式化。

2、Null值处理

原来我们以为这步可以省略,毕竟是集团统建的系统,怎么可能会在主键级别的字段上出现Null值呢?不!它真的有!不管什么原因把,把企业法人名称为空的值摘录出去,不纳入数据整合的范围。

3、数据去重

第一步没省略,第二步也做一下吧。结果,通过排序和函数的处理,真的有重复的企业法人,真的有!在咨询了系统管理员和相关业务部门后,也不纳入数据整合的范围。

4、数据比对

利用函数比对源数据和主数据中不一致的企业法人,找出差异对象,即名称不一致的企业法人,留作数据整合用。

三、数据整合

接下来开始是比较有意(ku)思(zao)的工作了,要给所有类型的差异数据打上标签,别问我为什么,问就是需要业务人员处理呗。

1、名称不一致

我们发现的第一类差异数据就是“存在的企业,但源系统名称与主数据名称不一致”的情况,这类情况分好几种原因:

1.1 中英文不一致

境外及中国的港、澳、台地区通常情况下在公司注册的时候用的是英文名称,而业务人员在系统内维护的时候很可能将英文翻译了,对的,他翻译了,而且很可能是直译!

1.2 英文名称缩写或错误

孔乙己问过:茴香豆的茴有几种写法,四种吧,好像。Limited(等同于有限公司)这个词,大家能想象到有几种写法么?再加上同义的呢?

1.3 沿用了旧名称

公司更名了,但是系统内还是旧名称。这个真的要看真本事了,毕竟在没有统一社会信用代码、邓白氏或税号的前提下,把两个完全不一样名称的单位联系到一起,是要技术的。

2、不存在的企业法人

2.1 非企业法人

相信我,财务真的会把一笔账款的名称扔到企业法人主数据里,而人事,会把@#¥%……&*()都扔进去。

2.2 名称不全

针对某很长名字公司的某地区分支机构,很可能出现一种无奈的情况:某AP系统的名称字段长度为40个字符,没够,给截位了。在后面的字都看不到的情况下,业务人员生生用了好几个月不放声!

2.3 已注销企业

这个好说,去国家组织机构网站查一下企业的续存情况即可知。

四、数据解释

我俩将整合后的数据打上标签后,逐一与业务进行核对,简单的表格和可视化了一下,对每一类数据接下来的处理提出了建议,用于向公司领导汇报。

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

       据说,领导招我们来之前,是骂了我一顿的,说我们的工作做的不到位导致一些列情况的出现。不过经过3天鏖战,终于将清洗、整合后的数据呈现在领导面前的时候,还是得到了些许夸奖,也算对此前工作的一个交代。我们并不是专业的数据处理人员,是所积累的工作经验加上负责的精神撑起了这份工作,有两个小小的概况,借机抒发一下:

懂业务,事半功倍

这次跟我一起来的同事是项目组里专门负责客户、供应商和法人主数据的兄弟,老哥干主数据工作5年多了,各种离奇复杂的情况都见过,练就了一身的神技:见到部分英文关键字能八九不离十的说出该单位的中文名称,续存状况及管理、法人层级!这为我们在清洗境外公司数据的时候节省了大量的时间。老哥还能根据公司的经营状况,通过各种工具网站收集到用户数据整合的信息,这个真不是随便抓来一个程序员就能干的出来的,所谓程序员懂业务,谁也挡不住!

十八般武艺,要样样精通

很多数据分析师在面对数据清洗的时候都头大,尤其对于字符串级别数据的处理,对于连续性数据的泛化等问题上,能避则避。甚至我接触到在国外工作的小伙伴跟我炫耀,他们搜集到的数据整合性非常好,几乎不需要任何数据清洗即可用于分析和建模。但是大家要清楚的是,以上的情况都是有前提的,要么你有套比较牛的系统,收集到的数据质量本身就好;要么你有个大团队,有专门的人给你做这个事儿。而通常情况下,在国内以上两种情况都难以实现,这就需要励志成为数据分析师的我们要精通跟数据相关的所有技术,而且要不断的丰富自己,不断的拓展技术栈,否则只能停留在简单的“数据探索”阶段,拿着不整合的数据做成报表应付交差。于数据真正价值的挖掘,于自身能力的提升都需要我们不断的努力提升自己,所谓十八般武艺,样样精通。

以上观点仅代表个人浅薄的理解,不当之处还望指正。分享给大家,转载请注明出处和作者。

预祝大家2021年顺风顺水,顺颂商祺!





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: