乾 源 档 案
点击蓝字
关注我们
点
击
蓝
字
关
注
我
们
一
档案目录数据质检概述
随着档案数字化工作的不断推进,档案部门存量档案的目录著录和全文数字化取得了显著成绩。但这部分档案数字化成果数量庞大,质量情况却并不乐观,这使得数据质量检查工作任务艰巨。早期著录的档案目录数据,由于并非使用档案数字化专用软件著录,数据规范性欠佳;再者,档案数字化项目多采用服务外包的模式进行,加工人员职业素养、专业水平参差不齐。因此,在档案数字化项目实施以及数据接收工作中,数据质检工作对保证档案数字化成果数据质量,起着决定性的作用。
数据质检工作通常采用人工审核结合机检的方案进行。机检能够在短时间内对全量数据进行错误排查,效果显著,这是人工审核无法比拟的优势。在人工审核前进行机检,可提前发现部分错误,减轻人工审核工作负担;人工审核后进行机检,则能够弥补人工审核工作的一些疏漏。
目前,大多数情况下数字化加工团队已配备专业的质检软件工具,甚至已有AI赋能的相关应用,但也有一些小规模的加工团队依然缺乏专业工具支持;同样,档案部门在接收已加工数据时,需要进行目录数据抽检,部分单位也缺乏专业工具支持。
本文结合笔者多年档案数字化目录数据机检实践经验,将笔者珍藏多年的、针对SQL Server数据库和Excel软件的质检工具代码提供给大家,旨在记录、分享、交流,助力提升档案数字化工作效率和数据质量。
二
档案目录数据质检工具
1、检查字段的数据长度
全宗号、目录号、分类号、年度、日期、保管期限、案卷号、案卷级档号、文件级档号等常设字段,都有特定的数据长度要求。以档号为例,其编制长度要求为19。
①
SQL执行语句
select dh
from [dbo].[SystemCreate20250312094647684]
where len(dh)<> 19
如下图:
▲ 【图1】
说明:在上述语句中,dh指文件档号,[dbo].[SystemCreate20250312094647684]指查找内容所在数据库表的名称,len函数返回字符串的字符个数,执行该语句后,不符合长度要求的数据将被筛选出来。
②
EXCEL执行方法
在Excel中,通过建立辅助列并输入公式“=len(A2)”(假设档号数据存放在A列),如图2,即可计算出每个档号的字符长度。然后,利用筛选功能筛选出不等于19的值,结果即为异常数据,如图3。
▲ 【图2】
▲ 【图3】
2、检查字段的固定值或范围
全宗号、目录号、分类号、年度、保管期限等字段,其取值往往有固定要求或特定范围。
2.1 全宗号固定值检查
假设全宗号的固定值为“0000”。
①
SQL执行语句
select dh,qzh
from [dbo].[SystemCreate20250312094647684]
where qzh<>'0000'
如下图:
▲ 【图4】
说明:在上述语句中,qzh代表全宗号。执行该语句,能快速找出全宗号不符合固定值的数据。
②
EXCEL执行方法
在Excel中,采用筛选工具对全宗号列进行对比筛查,如图5,将不等于“0000”的数据筛选出来,方便直观地查看和处理异常数据。
▲ 【图5】
2.2 年度范围检查
若年度范围为2003至2010。
①
SQL执行语句
select dh,nd
from [dbo].[SystemCreate20250312094647684]
where nd not between 2003 and 2010
如下图:
▲ 【图6】
说明:这里的nd指年度。通过该语句,可检索出年度不在规定范围内的数据。
②
EXCEL执行方法
采用筛选工具,在自定义筛选中设置条件,筛查出年度不符合范围的数据,如图7;也可以添加辅助列,输入公式“=AND(B2>=2003,B2<=2010)”(假设年度数据存放在B列),如图8,公式返回TRUE表示数据正确,返回FALSE则为异常数据。
▲ 【图7】
▲ 【图8】
说明:AND函数用于检查多个条件是否同时成立。
2.3 保管期限值检查
文书档案保管期限通常为“永久”“30年”“10年”。
①
SQL执行语句
select dh,bgqx
from [dbo].[SystemCreate20250312094647684]
where bgqx not in('永久','30年','10年')
如下图:
▲ 【图9】
说明:语句中bgqx指保管期限。执行此语句,可快速定位保管期限异常的数据。
②
EXCEL执行方法
采用筛选工具,筛选出不在规定保管期限范围内的数据,如图10;或者添加辅助列,输入公式“=OR(C2="永久",C2="30年",C2="10年")”(假设保管期限数据存放在C列),如图11,对比值TRUE为正确,对比值FALSE为异常。
▲ 【图10】
▲ 【图11】
说明:OR函数检查字符串是否符合参数组中的至少一个条件。
2.4 卷内序号编排检查
①
SQL执行语句
1.跳号的检测
select ajjdh as 案卷级档号,MAX(jnxh*1)as 最大序号,COUNT(jnxh)as 件数
from [dbo].[SystemCreate20250312092956453]
group by ajjdh
having MAX(jnxh)<>COUNT(jnxh)
如下图:
▲ 【图12】
2.重号的检测
select ajjdh as 案卷级档号,jnxh as 卷内序号,COUNT(jnxh) as 出现次数
from [dbo].[SystemCreate20250312092956453]
group by ajjdh,jnxh
having COUNT(jnxh)>1
如下图:
▲ 【图13】
说明:在上述语句中,ajjdh指案卷级档号,jnxh指卷内序号。MAX函数返回参数列表中数的最大值,COUNT函数返回参数列表中值的个数。通过这两个语句,分别可以检测出卷内序号是否存在跳号和重号的情况。
②
EXCEL执行方法
在Excel中,建立辅助列并输入公式“=TEXT(COUNTIFS(A$2:A2,A2),"00000")=C2”(假设案卷级档号存放在A列,卷内序号存放在C列),如图14,对比值TRUE为数据正确,对比值FALSE为异常数据。
▲ 【图14】
说明:TEXT函数用于将数值转换为按指定数字格式表示的文本(卷内序号5位数);COUNTIFS函数计算多个区域中满足给定条件的单元格的个数。
3、检查字段对应性
全宗号与单位名称、分类号与分类名称、保管期限与保管期限代码等字段之间存在对应关系。
3.1 保管期限与保管期限代码对应检查
当保管期限为“永久”“30年”“10年”,对应的保管期限代码应为“Y”“D30”“D10”。
①
SQL执行语句
select dh,bgqx,bgqxdm
from [dbo].[SystemCreate20250312094647684]
where (bgqx='永久'and bgqxdm<>'Y')
or (bgqx='30年'and bgqxdm<>'D30')
or (bgqx='10年'and bgqxdm<>'D10')
如下图:
▲ 【图15】
说明:bgqxdm指保管期限代码。执行该语句,可找出保管期限与代码不对应的数据。
②
EXCEL执行方法
采用筛选工具,对保管期限和保管期限代码列进行筛选,对比检查对应关系,如图16。
▲ 【图16】
3.2 文件编号年度与文件日期年度对应检查
①
SQL执行语句
select dh,wjbh,wjrq
from [dbo].[SystemCreate20250312094647684]
where substring(wjbh,patindex('%[0-9]%',wjbh),4)*1<>left(wjrq,4)
如下图:
▲ 【图17】
说明:wjbh指文件编号,wjrq指文件日期。substring函数从文本字符串中指定的位置开始,返回指定长度的字符串,patindex函数在字符串中搜索指定的字符串,返回首次出现的位置,left函数从一个文本字符串的第一个字符开始返回指定个数的字符。该语句通过提取文件编号和文件日期中的年度信息进行对比,筛选出不对应的记录。
②
EXCEL执行方法
在Excel中,可以通过建立辅助列并输入公式“=MID(B2,FIND("〔",B2)+1,4)=LEFT(C2,4)”,如图18-19(假设文件编号存放在B列,文件日期存放在C列);或者先将文件编号、文件日期字段内容,使用分列工具,分别提取出年度,文件日期选择固定宽度进行分列,如图20-22;文件编号中的年度,因为所在位置不固定,所以选择分隔符号(选用“〔”及“〕”)进行两次分列,如图23-25,然后建立辅助列输入公式“=C2=E2”进行对比筛查,如图26。对比值TRUE为正确,对比值FALSE为异常。
▲ 【图18】
说明:MID函数从文本字符串中指定的位置开始,返回指定长度的字符串;FIND函数返回一个字符串在另一个字符串中出现的起始位置;LEFT函数从一个文本字符串的第一个字符开始返回指定个数的字符。
▲ 【图19】
说明:OR函数检查字符串是否符合参数组中的至少一个条件。
▲ 【图20】
▲ 【图21】
▲ 【图22】
▲ 【图23】
▲ 【图24】
说明:先用“〔”分列后,再用“〕”进行分列。
▲ 【图25】
▲ 【图26】
3.3 文件编号中的机构代字与责任者对应检查
例如,文件编号中包含“闽政”时,对应的责任者则应包含“福建省人民政府”。
①
SQL执行语句
select dh,wjbh,zrz
from [dbo].[SystemCreate20250312094647684]
where wjbh like'%闽政%'and zrz not like'%福建省人民政府%'
如下图:
▲ 【图27】
说明:zrz指责任者。通过该语句,能找出文件编号与责任者不对应的异常数据。此处使用的“若A则B”的逻辑关系,也可用于检查人事等档案中材料名称及分类,相对固定统一的材料分类。
②
EXCEL执行方法
在Excel中,建立辅助列输入公式“=AND(COUNTIF(文件编号,"*闽政*")>0,责任者="福建省人民政府")”,如图28,对比值TRUE为正确,对比值FALSE为异常,如图29。
▲ 【图28】
说明:AND函数用于检查多个条件是否同时成立;COUNTIF函数计算区域中满足给定条件的单元格的个数。
▲ 【图29】
4、检查包含组合规则的字段
档号、分类号等字段以及书名号等成对型符号的使用有特定规则。
4.1 档号组合规则检查
档号由全宗号、类别号以及件号组成。
①
SQL执行语句
select dh,qzh,lbh,jh
from [dbo].[SystemCreate20250312094647684]
where dh<>qzh+'-'+lbh+'-'+jh
如下图:
▲ 【图30】
说明:dh指档号,qzh指全宗号,lbh指类别号,jh指件号。执行该语句,可筛选出不符合档号组合规则的数据。
②
EXCEL执行方法
在Excel中,建立辅助列输入公式“=dh=qzh&"-"&lbh&"-"&jh”,公式返回TRUE表示档号组合正确,FALSE则为异常,如图31。
▲ 【图31】
4.2 文件题名中书名号使用检查
①
SQL执行语句
select dh,wjtm
from [dbo].[SystemCreate20250312094647684]
where (wjtm like '%《%' and wjtm not like '%》%')
or (wjtm like '%》%' and wjtm not like '%《%')
如下图:
▲ 【图32】
说明:wjtm指文件题名。该语句用于检测文件题名中书名号是否完整使用或存在著录错误,但此方法不适用于同一组符号多次使用的情形。
②
EXCEL执行方法
通过在Excel建立的辅助列输入公式“=AND(ISNUMBER(FIND("《",F2)),ISNUMBER(FIND("》",F2)))”(假设文件题名存放在F列),对比值TRUE为正确,对比值FALSE为异常,如图33。
▲ 【图33】
说明:AND函数用于检查多个条件是否同时成立,ISNUMBER函数检测一个字符串是否为数值,FIND函数返回一个字符串在另一个字符串中出现的起始位置。根据公式返回值判断书名号使用是否正确,同样,该方法也不适用于同一符号多次使用的情况。
5、检查内容为承袭关联的字段
案卷级表(父表)与文件级表(子表)的全宗号、分类号等字段存在承袭关联。以文件级表的分类号等于案卷级表的分类号为例。
①
SQL执行语句
select b.wjjdh,b.flh
from [dbo].[SystemCreate20250312085045807] as a inner join [dbo].[SystemCreate20250312092956453] as b on a.ajjdh=b.ajjdh
where a.flh<>b.flh
如下图:
▲ 【图34】
说明:[dbo].[SystemCreate20250312085045807]指案卷级表名称(父表名称);[dbo].[SystemCreate20250312092956453]指文件级表名称(子表名称);ajjdh指案卷级档号;wjjdh指文件级档号;flh指分类号。inner join...on...用于根据两个或者多个表之间的匹配条件来合并数据。通过该语句,可找出文件级表与案卷级表分类号不一致的数据。
②
EXCEL执行方法
在Excel文件级表建立辅助列,输入公式“=C2=VLOOKUP(A2,Table1!A:B,2,FALSE)”(假设文件级表中分类号在C列,案卷级档号在A列,案卷级表Table1中案卷级档号在A列,分类号在B列),对比值TRUE为正确,对比值FALSE为异常,如图35-36。
▲ 【图35】案卷级表
▲ 【图36】文件级表
说明:VLOOKUP函数在表格或数组的首列查找指定的字符串,并由此返回表格或数组当前行中指定列处的字符串;Table1指案卷级表。
6、检查内容为统计数据的字段
总页数、件数等字段属于统计数据字段。
6.1 总页数统计检查
①
SQL执行语句
select a.ajjdh,a.zys,b.卷内页数
from [dbo].[SystemCreate20250312085045807] as a
inner join(select ajjdh,sum(ys)as 卷内页数 from [dbo].[SystemCreate20250312092956453] group by ajjdh)as b
on a.ajjdh=b.ajjdh
where a.zys<>b.卷内页数
如下图:
▲ 【图37】
说明:zys指总页数,ys指页数。inner join...on...用于根据两个或者多个表之间的匹配条件来合并数据,sum函数返回所有数值之和,group by用于将结果集按照一个或者多个列进行分组。该语句通过关联两个表,对比总页数与卷内页数之和是否一致,筛选出不一致的数据。
②
EXCEL执行方法
首先,将子表建立透视表,以案卷级档号分组求和页数,透视表可建立在现有工作表的父表中或者新工作表,如图38-39;然后,将透视表的汇总与父表总页数进行对比,在辅助列输入公式“=D2=VLOOKUP(B2,G:H,2,FALSE)”(假设父表中总页数在D列,案卷级档号在B列,透视表中案卷级档号在G列,求和后的页数在H列),如图40,对比值TRUE为正确,对比值FALSE为异常。
▲ 【图38】子表
▲ 【图39】父表
▲ 【图40】
6.2 件数统计检查
①
SQL执行语句
select a.ajjdh,a.js,b.卷内件数
from [dbo].[SystemCreate20250312085045807] as a
inner join(select ajjdh,count(jnxh)as 卷内件数 from [dbo].[SystemCreate20250312092956453] group by ajjdh)as b
on a.ajjdh=b.ajjdh
where a.js<>b.卷内件数
如下图:
▲ 【图41】
说明:js指件数;jnxh指卷内序号,卷内序号也可用文件题名等必填字段代替进行计数。count函数用于统计行数。执行该语句,可找出件数统计不一致的数据。
②
EXCEL执行方法
与总页数统计类似,首先,将子表建立透视表,以案卷级档号分组计数文件级档号(只要是非空字段均可),透视表可建立在现有工作表的父表中或者新工作表,如图42-43;然后,将透视表的汇总与父表件数进行对比,在辅助列输入公式“=D2=VLOOKUP(B2,G:H,2,FALSE)”(假设父表中件数在D列,案卷级档号在B列,透视表中案卷级档号在G列,文件级档号的计数值在H列),如图44,根据公式返回值判断件数统计是否正确。
▲ 【图42】子表
▲ 【图43】父表
▲ 【图44】
三
结语
综上所述,通过质检工具对档案数字化目录数据的长度、固定值或范围、对应性、组合规则、承袭关联和统计准确性等多个维度进行检查,能够有效提高数据质量,为档案数字化工作提供有力支撑。
实际运用中,大家可以根据电脑软件安装情况以及数据量大小,结合个人对操作SQL Server数据库和Excel软件的熟悉程度,灵活选用这些检测方法。如需处理超大规模数据,Excel软件容易碰到性能瓶颈,在SQL Server数据库中处理较为合适。
贵州乾源档案服务有限公司专注于档案整理、档案数字化加工服务、档案系统软件定制开发、档案信息技术领域的技术开发、档案整理及装订服务、档案整理相关办公软件及硬件、档案盒、防磁柜、密集架、档案柜、档案室建设等。公司创立就确定了以档案管理专业服务为出发点,依托专业的档案管理系统,使现代信息技术与人完美结合,开发新型的档案服务产业链,打造方便、高效、快捷的档案管理服务模式;客户涉及政府机关、企事业单位(如:水利、电力、农业、国土、金融、教育、医疗、建筑等行业领域)。
企业文化
企业愿景:立足贵州,面向全国,打造成为档案服务行业内的高端口碑公司。
企业态度:工匠精神做档案,精益求精做服务。
企业使命:为客户提供高质量的专业化产品和服务。
服务理念
“以史治世、以档治事”是人类社会发展的基本方法,从事档案工作的功在当代,利在千秋。随着物质文明走向高度发达,档案作为一种特殊的文化软实力,在社会的经济、政治、文化生活占有的份额也会越来越重要而广泛。
小编:蔡朝兰
一审:杨清松
二审:李毓仙
三审:丁国珍
想了解更多资讯么?
关注我们吧!
欢迎来电咨询或者留言哦~
手机/电话:
18685093999 19185046915
0854-2779389
地址:瓮安县雍阳街道办事处


