时常在琢磨Excel数据入库的问题。意义重大,业务实现线上管理,以更多的用户共享应用,从而提升企业的效率。然而,企业级数据整理入库,将是一个最为基础的工作,少量的数据入库,可以动用人力去实施;然而遇到数万个文件,该怎么办?这项工作,技术含量不高,性价比低,如何高效推进呢?
我一直有一个观念,“外行仅通过很少培训就行胜任工作,完全可以交给计算机来干。”
Excel文档,一个相对标准的数据存储方式,从文件中,把内容抽提出来放到库里。大约十五年前曾遇到过,在储层研究过程中,对研究区的岩性与物性按深度段进行匹配,分析岩性与物性的对应关系。岩芯物性数据由试验室的分析人员测试而已,以Excel报告的格式存放。
VBA是一个很好的东西,录制宏命令,再进行少量的整理,即可自动完成特定的工作。于是,以VBA为基础,编写了一个针对物性解析入库的小软件。
后来,在DatistEQ中,增加了智能解析节点,提升了软件应用的普适性;同时,与其它节点协作,在文件解析的质量评估与数据质量提升方面,取得了质的飞跃。
最近后一个案例,从1968年以来的取芯台帐,1万多个文档,解析入库,前前后后陆续忙了一两个星期,总是想不明白解析过程中的奥义。
1、案例
DatistEQ中的流程如下:
注:2022 Q4 版,对系统进行优化,智能解析节点的日志,输出两个文件:一个是保留原有详细的格式;另一则是,文件解析列表,以便于对文件解析质量进行评估。
共69个节点
共69个节点;其中,2个数据源节点。
Title Count NodeName
汇总 11 NodeAggregate
行筛选 10 NodeSelect
列过滤 10 NodeFilter
新列 8 NodeDerive
联合 5 NodeMerge
超节点 3 NodeSuper
输入 3 NodeSuperInput
输出 3 NodeSuperOutput
条件替换 2 NodeFiller
追加 2 NodeAppend
行序 2 NodeSort
累加器 2 NodeRowID
智能解析 1 NodeXLS
汇总转列 1 NodeRecord2Field
浏览数据 1 NodeTable
文件收集器 1 NodeStreamCollection
浏览报告 1 NodeHtmlReport
列序 1 NodeFieldSort
TXT+ 1 NodeTXTEx
行列转换 1 NodeRow2Col
运行日志如下:(智能解析节点,运行耗时8分30秒)
[2022-09-04 21:44:32.191] [0.003] [367M] 日志: 【开启】<智能解析:5dfcbc19-d185-441d-a0ef-292711735dd8>
[2022-09-04 21:45:02.086] [29.895] [529M] 进度: <智能解析> 22282
[2022-09-04 21:45:02.433] [0.347] [529M] INFO: 解析Excel:864/14625 5.91%
[2022-09-04 21:45:32.100] [29.667] [521M] 进度: <智能解析> 46665
……
[2022-09-04 21:52:32.765] [29.986] [665M] INFO: 解析Excel:14129/14625 96.61%
[2022-09-04 21:52:32.782] [0.017] [665M] 进度: <智能解析> 353220
[2022-09-04 21:53:01.512] [28.730] [652M] INFO: 解析Excel:14625/14625 100.00%
[2022-09-04 21:53:01.802] [0.289] [652M] INFO: 【解析报告】
[2022-09-04 21:53:01.802] [0.000] [652M] INFO: 读取表单方式: 一个
[2022-09-04 21:53:01.802] [0.000] [652M] INFO: 日志文件位置: E:\实物地质资料\log.log
[2022-09-04 21:53:01.802] [0.000] [652M] INFO: 共获取14625个。
[2022-09-04 21:53:01.804] [0.003] [652M] INFO: 可解析14581个;其中,有数据文件12767个,入库记录366941条,无数据文件1814个。
[2022-09-04 21:53:01.806] [0.001] [652M] INFO: 不可解析44个;
[2022-09-04 21:53:03.016] [1.211] [652M] INFO: 【完成】<智能解析:5dfcbc19-d185-441d-a0ef-292711735dd8> T
2、数据质量评价
数据解析的第一步是什么?需求与规则;数据质量?
1)完整性
释义:空值或记录不完整。
举例:合同有效日期为空,地址信息只写到省市。
2)准确性
释义:虽然是信息真实,但录入系统有偏差。
举例:客户姓名输入了错别字,或者输入成地址信息,就存在准确性问题。
3)有效性
释义:数据是否有效,广义来讲有效性也等同于真实性。
举例:客户提供的手机号,是否为可被联络的手机号。提供的证件信息,是否为证件有效期内的信息等。
4)一致性
释义:相同数据项在不同系统或同一系统内不同表中记录多次时,多个数据值是否相同。
举例:例如同一客户证件号,在客户信息管理系统中的客户名称应与信贷系统一致。
5)唯一性
释义:是否满足一个业务唯一关键数据项值组合仅对应一条记录。
举例:例如一个统一社会信息用代码仅有一条客户信息记录。
3、文件质量评价
文件级<先挑文件,那些是没有问题的?>
1)文件错误,打开异常不能访问;日志;完整性
2)文件不识别,读取模板不匹配,没有指定的内容;日志;完整性
3)空文件,模板匹配,但内容为空;日志;完整性
4)文件重复,不同文件同井名。唯一性
解决方案:判断文件的完整性,最相对完整的文件提出来;以文件为单位,进行判断,而非记录,曾以记录为单位进行去重,不完整文件则无法区分。
5)一个文件多个井名;唯一性
记录级
6)井名与文件名不致; 一致性
7)井名为空;完整性
8)存放位置为空;完整性
9)井段信息为空;完整性
文件总数14625个。
解析12767个,
入库11593口井,共331729段,单井平均64米,共747186米岩芯。
待核查687个
多个井名 67个
井号有误 168个
井号缺失 156个
井段缺失 295个
位置缺失 141个
因重复忽略 487个
空文件 1814个
未识别 44个
错误文件 0个
4、结论
需求是什么?仅是人为的分类,看问题的角度不同。
原以为需求是把Excel文件解析入库;进而从文件质量评估视角来进行处理。把单纯数据入库问题转化为质量评估问题,从具体数据入库工作跳出来,关注全局性文件质量问题上,把文件划波,更容易解决问题。
由此可见,数据入库仅是质量评估的副产品,沿用数据质量估计的基础理论,从文件级、记录级进行数据质量评估。在数据质量理论的指导下,细化为文件质量评价方法,形成9条具体的业务规则。
低代码的意义,降低试错成本?1万个文件弄完,半年过去了,再来半年?具体做事人,跟本没有精力去重复尝试。