MDM数据清洗功能开发说明

(20) 2024-03-31 20:01:01

科技飞速发展的时代,企业信息化建设会越来越完善,越来越体系化,所上的应用系统也就越来越多,业务发展中沉淀了大量的数据,但是这些数据没有为企业带来直观的价值,没有形成企业的数据资产,所以越来越多的企业进入到了数据治理阶段,对于主数据治理的需求越来越明确。

MDM基础数据管理平台是进行清洗和治理企业的主数据,使企业的主数据具有唯一性、准确性、一致性、及时性,通过主数据数据清洗功能将错误数据和重复数据进行清洗,从而保证企业数据能够做到以上那几点,然后再分发至下游系统,使企业信息化更加完善。

1整体介绍

主数据治理方案可以将企业的组织、人员、客户、供应商等高度共享的数据进行统一管理,对需要的业务系统进行同步分发,使数据易采集、易理解、易分析,提高部门与部门之间的沟通效率。 

1.1产品说明 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第1张

MDM基础数据管理系统是对主数据进行同步、清洗、治理、分发全生命周期的一次管理,帮助各个业务系统的主数据统一,保障它们的完整性、一致性,同步就是从主数据源头到主数据过程,治理是到主数据后进行一系列的管理和维护、分发是把治理后主数据分发给各个业务系统包括源头。 

通过以上各个过程的相互配合去从根本上解决企业各个业务系统之间数据不能共享,数据重复、错误等问题。使企业在数据方面更完善,业务进行更顺畅。 

1.2功能说明 

通过数据清洗功能下载主数据导入模板,源头业务系统把数据填写模板中,通过数据清洗导入功能进行导入清洗,检测出数据中欠缺的、重复的、不符合规则数据,通过导出功能把失败的数据导出到Excel中进行数据处理后,在重新导入重新检测直到所有数据成功为止,然后把所有成功的数据导出Excel中,返回给业务源头系统进行源头系统的数据清洗(源头系统添加主数据编码映射),通过主数据任务分发把标准的数据分发给业务,这样就把源头、主数据、下发至业务系统数据保持一致。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第2张  

1.3需求分析 

MDM是对主数据进行同步、清洗、治理、分发全生命周期的一次管理,帮助各个业务系统的主数据统一,保障它们的完整性、一致性,同步就是从主数据源头到主数据过程,治理是到主数据后进行已系列的管理和维护、分发是把治理后主数据分发给各个业务系统包括源头,而本次要扩展的数据清洗功能就是在同步和治理过程中把主数据一些欠缺的、重复的、不符合规则的数据清洗出来。 

2功能设计 

功能设计部分包含大体上的实现思路,数据库表的设计,表关联关系设计,清洗功能相关的配置策略,还有具体的实现步骤。看完设计部分之后大概就能对清洗功能有了一定的了解,知道它能做什么,有哪些功能。 

2.1实现思路 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第3张

首先将数据导入到数据清洗功能中,导入过程中会根据配置的校验规则将不符合校验规则的数据的状态标记为失败;处理完错误数据之后,紧接着就会处理重复数据,通过数据巡检规则去判断每条数据之间是否重复,同样,对于重复的数据也会标记为失败状态,最终导入到清洗功能中就可以看到哪些数据存在问题,存在哪些问题,然后就可以导出到Excel表格中进行修改,接下来就是同样的操作,重复多次,直至数据状态全部变为成功,就可以用这些数据去做其它操作了。 

2.2模型设计 

模型设计主要涉及到数据清洗功能相关的数据库表结构以及表与表之间的关联关系,然后就是相关的清洗功能相关的一些配置说明。 

2.2.1清洗表设计 

数据清洗会给每个主数据创建四张表,包括清洗导入表、错误信息表、重复数据表和校验规则关联表。 

清洗导入表用于存放所有导入到数据清洗功能中的数据,无论成功与失败,所有数据都能够通过这张表查到。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第4张

错误信息表用于存放导入过程中不符合校验规则的数据,这个是按照字段来导入的,一条数据的一个字段错误则为一条错误数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第5张

重复数据表用于存放导入过程中相互之间重复的所有数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第6张

校验规则关联表用于存放那些不符合校验规则的数据关联的校验规则信息。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第7张

2.2.2清洗表关联 

清洗导入表与错误信息表相互关联,通过清洗ID可以查到某条数据对应的错误信息,或者直接查询到所有错误信息。同样,通过错误信息表也能方向查询出有哪些数据有错误。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第8张

清洗导入表与重复数据表相互关联,通过清洗ID可以查询到某条数据的和它重复的数据信息,也可以直接查询所有重复数据。和错误信息表同理,也能够通过重复数据表直接筛选出有哪些重复的数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第9张  

错误信息表与校验规则表相互关联,通过错误ID可以查询到这个错误字段关联的校验规则有哪些。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第10张  

2.2.3清洗前配置 

创建主数据通常分为两个部分,一个是数据建模,一个是功能建模,这两部分中都有数据清洗相关的配置。首先从数据建模中说起,在编辑主数据信息的时候可以选择是否需要数据清洗功能,如下图所示: 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第11张

如果选择了数据清洗,当跳转到数据建模页面中时,就需要配置字段关联的校验规则,之后的清洗过程就会按照配置的校验规则去执行。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第12张

配置好校验规则后点击提交按钮就会跳转到创建表的页面并生成数据清洗相关的那四张表,点击创建和提交,数据建模部分相关的配置就完成了。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第13张

接下来是功能建模,功能建模中配置的一个是数据清洗导出的策略,这个导出包括过程中导出和导出最终清洗结果。这个策略分为两种,分别为导出全批次成功和导出单批次全量。全批次成功导出的是所有批次下清洗成功的数据,单批次全量导出的是最后一个批次下的所有数据,如图所示: 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第14张

功能建模配置的另一个是,巡检匹配字段,也就是清洗数据重复校验的字段,如图所示: 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第15张

完成以上这些配置后就可以进行数据清洗功能的相关操作了。 

2.3实现步骤 

数据清洗功能整体实现步骤如下: 

1.完成数据清洗相关数据库表的动态生成; 

2.完成数据清洗相关配置的功能,如:是否清洗,导出策略; 

3.完成清洗数据的导入功能,又可细分为三部分:常规数据的导入,错误数据的导入和重复数据的导入; 

4.完成清洗数据的详细信息查看功能; 

5.完成清洗数据重复数据的查看和其它操作功能,如:排除重复数据和还原重复数据; 

6.完成数据的过滤筛选功能,如:批次号过滤,错误字段过滤和校验规则过滤等; 

7.完成清洗数据的导出功能,如:批次导出和导出最终结果。 

3基本功能 

在将数据导入到清洗功能中后可以对错误数据进行查看,有详细的错误信息可以查看,另外也可以查看重复数据,排除重复数据。除此之外还有过滤功能,可以通过字段和校验规则,过滤出相关的数据,下面的内容中将会对这些功能进行详细介绍。 

3.1清洗详情 

点击查看数据,或者双击可以查看错误数据信息或者是重复信息。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第16张

3.2清洗过滤 

清洗过滤可以通过字段和校验规则筛选出符合过滤条件的数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第17张

3.3查看重复 

点击右上角的是否重复可以筛选出重复数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第18张

进入到数据详情页面可以查看重复数据的信息,包括常规的字段和重复的字段信息。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第19张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第20张

3.4排除重复 

对于重复,清洗功能自带排除功能,可以将重复数据进行排除,如果不小心误删也可以通过还原按钮将数据还原回去,类似电脑桌面上的回收站功能。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第21张

4清洗导入 

数据导入主要分为两部分,一部分是导入错误数据,这部分数据主要是通过对数据中配置校验规则的字段进行校验,不符合规则的数据将被过滤出来;另一部分是导入重复数据,通过巡检规则将重复数据过滤出来,对于失败的数据可以进行导出,然后在Excel中进行修改,再导入到清洗表中,反复多次直到数据没有任何问题,然后可以选择导出到Excel,也可以同步到主数据中,然后分发到下游系统。 

4.1基本数据 

基本数据的导入主要是按照清洗导入表的结构进行导入,对Excel表格进行数据的读取,这里用到了HSSF进行对Excel表格数据读取的操作。通过循环每一行中的每一个单元格将数据存入到大数据字段中,新增createCleanRecords()和findCleanRecords()方法,到这里一条按数据导入完成,以此类推,完成清洗导入表的数据新增。

MDM数据清洗功能开发说明 (https://mushiming.com/)  第22张

4.2错误数据 

错误数据的导入需要在导入基本数据的过程中通过校验规则对每条数据的每个字段进行判断,不符合校验规则的标记为失败状态,最终对失败数据进行新增,错误字段为上面校验的字段,错误信息则是校验规则名称,新增createErrorRecords()和findCleanErrorRecords()方法,完成错误信息表数据的新增。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第23张

4.3重复数据 

1.实现步骤 

重复数据的导入需要在错误信息全部导入完成之后,将没有错误的数据整理到一起,再对这些数据进行循环读取,通过巡检规则来判断配置的字段是否存在值相同的情况,如果存在,修改清洗状态为失败,获取到重复的字段,然后将数据导入到重复数据表中。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第24张

2.效果展示 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第25张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第26张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第27张

5清洗导出 

清洗导出主要分为三种情况,第一种是选中数据进行导出,第二种是批次导出,第三种是导出清洗结果,导出功能通过freemarker模板将数据导出到Excel表格中,下面将对这三种清洗导入分别进行说明。 

5.1选择导出 

1.实现步骤 

选择指定的数据,可以单选和多选,也可以按页进行全选,点击批次导出,通过选择的清洗数据ID分别去到清洗导入表、错误信息表和重复数据表中查询符合条件的数据,清洗表中获取大字段中的数据,导出到表格中,另外就是错误个数和错误信息,错误个数为当前数据不符合校验规则的字段的个数,错误信息为字段加校验规则名称;如果是数据重复,错误个数为1,错误信息为数据重复。 

2.效果展示 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第28张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第29张

5.2批次导出 

1.实现步骤 

批次导出根据导出策略分为两种情况,导出全批次下失败数据和导出当前批次下全部数据,第一种情况,需要先获取当前清洗页面中的数据状态,如果不为失败,则提示用户需要先过滤出失败数据,再进行导出,如果是单批次全量,则获取当前批次号然后按照批次号进行数据的导出,具体的导出过程同选择导出。 

2.效果展示 

导出全批次成功(提示过滤出失败数据): 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第30张

导出单批次全量: 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第31张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第32张

5.3结果导出 

1.实现步骤 

结果导出为导出最终的清洗结果,同样也根据导出策略的不同分为导出全批次成功数据和单批次全量数据,不管哪一种,只要通过导出清洗结果按钮导出的数据,一定都是清洗成功后的数据,所以如果是导出单批次全量,就需要先查询当前批次下是否有失败数据,这个需要去清洗导入表查,如果失败数据的个数大于0,说明仍存在失败数据,这个时候提示用户需要对失败数据进行操作然后再次导出。 

2.效果展示 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第33张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第34张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第35张

6Excel技巧 

在实际业务场景中,需要清洗的数据量是非常巨大的,那就意味着错误的数据也会比较多,在这种情况下如何在Excel中快速对错误数据进行修改就成了每个业务员的必修课了。 

这部分内容将整理出一些关于在Excel中如何批量修改数据的操作技巧,实现在数据清洗的过程中快速对错误数据进行改正,从而提高工作效率。 

6.1快速筛选数据 

通常情况下,我们在处理数据量很大的Excel时,需要先进行筛选,将全部数据根据筛选条件分成若干个部分,再进行处理。筛选也有一些技巧。 

1.首先,直接选中首行,然后点击数据选项,再点击左侧自动筛选,之后每一个都会出现筛选的倒三角。   

MDM数据清洗功能开发说明 (https://mushiming.com/)  第36张

2.筛选通常分为内容筛选和颜色筛选,内容筛选直接根据数据值来进行筛选,比较直接,如果是带有数字的数据,也可以设置排序,这样查找起来比较方便。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第37张

3.除了按照内容筛选之外,还可以按照颜色进行筛选。按照颜色筛选需要有筛选条件,先把数据标记出来,例如,标记出重复数据(清洗功能需要修改的一类是不符合校验规则的数据,还有就是重复的数据,所以我们需要把重复数据先筛选出来)。 

4.首先,选中要筛选的列,点击上方重复项按钮,选择设置高亮重复项。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第38张

5.接下来,需要选择数据区域,如果筛选整列,这个就不要做出调整;如果需要调整,直接长按鼠标画出需要筛选的区域即可。这里还有一个细节需要注意:如果数据为身份证号或银行卡号,则需要勾选。因为这类数据属于数值类型,但是它的长度远超于正常数值范围,所以在这里需要特别设置一下,否则Excel没有办法识别这类数据。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第39张

6.设置好之后,重复的数据就会被标记成单独的颜色筛选出来,然后就可以按照颜色来筛选。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第40张

6.2批量调整列宽 

通常我们在打开一个Excel表格之后,每一列的列宽都是固定的,但是有一些列,他们的数据长度比较大,为了方便查看我们需要调整列宽,比较慢的做法是鼠标拖动对应列的首行单元格的右侧边框,而比较快速的做法则是直接双击右侧边框来实现列宽的调整。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第41张

6.3批量新增数据 

选中需要的单元格,在编辑栏输入数据,按下Ctrl键的同时,按Enter键,即可快速批量填充。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第42张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第43张

6.4批量修改数据 

1.鼠标放在单元格右下角,当出现十字光标的时候向下拖拽即可按照顺序自增,但是需要设置单元格格式为数值,如果是文本需要按住Ctrl键,然后再进行拖拽。 

2.除了拖拽之外也可以通过查找替换来批量操作数据,Ctrl+F快速弹出查找框,可以输入想要查找的内容,点击查看全部就可以查询到所有符合条件的数据,之后可以进行替换或者删除。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第44张

MDM数据清洗功能开发说明 (https://mushiming.com/)  第45张

6.5批量去小数点 

选中数据后,使用快捷操作组合键Ctrl+Shfit+1就可以看到小数点消失,只剩下整数。 

6.6数据换行显示 

有的时候一列数据会出现某几条很长的情况,如果直接调整列宽会让整体看起来不太美观,这个时候我们可以单独让这个单元格内数据换行显示,比较快速的方法就是先选中单元格,然后在编辑栏选择要换行的位置,按下alt+回车实现快速换行。 

MDM数据清洗功能开发说明 (https://mushiming.com/)  第46张

6.7常用快捷方式 

1.Ctrl+1快速打开单元格格式设置。 

2.Ctrl+加号快速插入行和列,Ctrl+减号快速删除行和列。 

3.Ctrl+tab快速切换工作簿。 

4.Ctrl+Enter批量输入内容。 

5.Ctrl+k插入超链接。 

6.Alt+回车单元格内强制转换。 

7.Ctrl+0隐藏选中的列。 

8.Ctrl+HOME移动到工作表的开头。 

9.Ctrl+END移动到工作表的最后一个单元格。 

10.Ctrl+Y重复上一次操作。 

7心得总结 

最后是总结部分,包括功能开发过程中遇到的问题,以及使用的技术要点,末尾是个人的心得体会部分。 

7.1问题总结 

本次数据清洗功能开发过程中遇到的棘手的问题还是比较多的。首先就是Excel数据读取的问题,由于是第一次接触相关功能的开发,所以对于这部分用的HSSF组件一开始并不熟悉,但是通过后面的学习以及实际应用过程中,对这部分的相关的知识以及常用的一些方法逐渐掌握,也顺利地完成了相关功能模块的开发。第二个就是关于freemarker模板的应用,也是一开始不太熟悉,对于单元格数据格式、模板的生成,以及导出的逻辑了解并不够,通过查看其它类似功能,去找一些方法进行学习理解,不懂的地方通过百度或者向同事请教,最后也是顺利地完成了相关模块的开发。除了技术上遇到的难题之外,还有逻辑方面需要继续强化,对于比较复杂的逻辑关系,梳理的时间就会比较久,不过通过清洗功能的开发,自己在逻辑这一方面已经有了很大的进步,但后续还需要继续加强。 

7.2技能收获 

这次学习到的新技术也是一个开发过程中遇到的比较棘手的问题。一是HSSF组件读取Excel数据。这个组件通过行和列定位到某一个单元格,然后获取单元格中的值,有字符串类型也有数值类型,还有其他比如日期类型等等。另外,这个组件也能获取到每个sheet中行数和列数,以及第一行,最后一行、第一列和最后数据信息。除此之外,还能查看每个单元格的数据类型,也可以自己定义单元格的数据类型,总体来说还是十分方便的,在操作过几次对于常用的方法掌握了之后使用起来也并没有很难。 

第二就是通过freemarker模板导出数据到Excel表格中。这部分主要是了解到freemarker模板就是将Excel表格由xls格式转换成xml格式存入到serve中,然后就是数据格式的配置,再有就是对于文件的输入输出流进行了学习了解。 

7.3心得体会 

这次数据清洗功能的开发整体用时比较久,期间涉及到的一些知识和技术基本上是第一次接触,了解程度并不够;另外对于功能的逻辑关系梳理的能力还需要继续强化,当遇到比较复杂的逻辑关系时,也能有条理、思路清晰的梳理出来,然后开发,这点是很重要的。还有就是对于各个功能模块需要考虑的更加全面,站在用户角度去思考,这样才能尽可能的避免测试过程中遇到很多问题,就不需要再耗费时间去修改调整,对于这方面尽可能在开发的时候就去做好。 

最后,通过该功能的开发,自己的收获还是非常大的,除了上面提到的一些新知识的学习之外,我觉得自己在逻辑方面进步最大,虽然还有很大的进步空间,但整体上已经比之前好了很多。另外,在开发的时候也慢慢地有了换位思考的意识,相信通过后续的开发工作的展开,会让自己这方面的意识变得越来越好。

THE END

发表回复