APP下载

大数据时代下的动态可配置数据采集系统的研究与设计

2018-04-18

计算机应用与软件 2018年3期
关键词:表单数据表字段

丁 俊 郑 辉

(安徽工业经济职业技术学院计算机与艺术学院 安徽 合肥 230051)

0 引 言

随着大数据时代的来临,大量原始数据的采集是一切数据分析和处理的基础。虽然互联网、电子仪器可以采集大量的数据,但还有很大一部分数据是需要人工填写的,如与个人相关的各类基本信息、问卷调查等。各级政府机构、企事业单位在采集此类数据时,或者打印出纸质表格或者制作出电子表格,然后下发给相关人群填写,再由专人收集整理统计,整个信息采集过程繁琐,费时费力,而且容易出错。

本文针对这个现实问题,在Java Web开发平台上,利用Apache POI插件开发出一套可以直接导入Excel数据采集模板并快速生成数据采集网页的Web应用程序。该数据采集网页可以根据用户的需求进行个性化的动态配置。在网页的生成和配置过程中,系统可以通过Excel标注提示、表单内容提示、客户端表单验证等多种方式,提醒和引导被采集人填写符合规范的信息。数据采集网页生成后,可通过QQ、微信和短信等多种方式向信息被采集人推送,被采集人可利用个人电脑、手机以及各类移动终端随时随地打开数据采集网页填写并提交信息,所有信息采集完毕后,又可从系统中导出数据生成人们熟悉的Excel文档,从而大大提高数据采集的效率和规范性。此外,存在于系统中的数据可以在多次数据采集中重复引用,一方面可减少被采集人的数据录入量,另一方面可以利用现有数据对新数据进行校验。通过反复多次相关的数据采集和整合,使得系统中的数据不断完善和庞大,为日后的大数据分析提供充足而真实的数据源。

1 系统技术选型

系统的基本框架是在Java Web平台上设计实现的,系统以CSS、JQuery、JSP和Servlet为主要开发技术,借助于Apache POI插件实现了Excel文件的导入和导出,底层以MySQL作为存储数据库。

2 系统总体架构设计

2.1 系统架构设计

为了实现从Excel模板数据的导入,到最终再以Excel格式的文件导出采集的数据,系统主要包括模板数据读入与解析、元数据记录与模式创建、模式配置、网页发布与数据采集和数据管理五大模块,如图1所示为系统总体架构图。

图1 系统总体架构图

2.1.1模板数据读入与解析模块

在本模块中,系统提供了文件上传表单接口,用户可以上传xls、xlsx、csv三种类型的模板文件,然后再从模板文件中解析出字段名和数据内容。

2.1.2元数据记录和模式创建模块

本模块根据数据读入和解析模块中已经解析出来的字段名、字段类型、各字段对应的数据内容等一系列信息创建满足需求的数据表元数据模型和字段元数据模型,然后再将这些字段名、字段类型等元素据存储到相应的元数据模型中。

2.1.3模式配置模块

在模式配置模块中,用户可以根据需要对字段类型、字段引用类型、字段对应的表单控件类型、字段的具体引用内容和字段注释等内容进行灵活配置,以满足个性化需求[1],如图2所示为一个论文数据采集表的模式配置画面。

图2 模式配置

2.1.4网页发布和数据采集模块

在本模块中,用户可以根据新生成的数据表模型以及配置好的模式特征,将数据采集网页以表单形式发布出去,通过QQ、微信和短信等多种方式向数据被采集人推送。被采集人可利用个人电脑、手机以及各类移动终端随时随地直接打开网页填写并提交信息,信息提交后将直接保存至服务器数据库中。

2.1.5预览、导出等其他数据管理模块

系统除了以上几个模块外,还包括数据预览、删除和导出几个常见数据管理模块。在预览模块中,对已采集的数据进行多种模式的筛选和排序查看;删除模块则对指定的数据表进行删除,同时以事务的形式对该表对应的数据表元数据和字段元数据进行删除操作,以保持数据的一致性;导出模块则利用Apache POI插件将已采集的数据进行全部或者分类导出成Excel文件。

2.2 系统数据模型设计

系统为了实现模式的动态可配置特性,除了需要创建与Excel文档相对应的用来存储被采集数据的数据模型外,还专门设计了两个用来记录数据表、字段和表单属性等一系列元数据的数据模型,分别是数据表元数据模型和字段元数据模型[2]。

2.2.1数据表元数据模型

该数据模型主要用来存放Excel模板文件中每个工作表的基本信息及其相关信息,它包括数据表Id(关键字段)、数据表原名、现名、原表类型、创建人、创建时间、字段数、发布网址、填表说明等数据,其数据模型如图3所示。

图3 数据表元数据模型

2.2.2字段元数据模型

该数据模型主要用来存放系统中所有字段及其相关的信息,它包括字段id(关键字段)、关联数据表id(外键)、字段名、字段类型、字段引用标志、字段具体引用内容、字段注释和字段对应的表单控件类型等数据,其数据模型如图4所示。

图4 字段元数据模型

3 系统实现

3.1 具体实现方法

系统的具体实现主要借助于Apache POI插件、Jquery、Ajax异步处理、JDBC批处理等技术,在实现过程中,其中模式解析、模式存储和模式配置三个部分比较复杂。

3.1.1模式解析的实现

系统的入口以表单形式提供模板文件的上传接口,文件上传后,再利用Apache POI插件实现对模板文件的数据读取和解析,在解析过程中,需要对模板文件的类型、模板文件中的字段名、数据类型、非常规数据等一系列信息进行识别和区分。不同的文件类型需要不同的POI对象来完成解析,如xlsx文件需要借助于XSSFWorkbook、XSSFRow、XSSFCell等多个对象来完成。而在对数据内容进行解析时,需要区分模板文件中每列数据的类型,如字符、数值、日期、公式和空值等,这些数据类型直接影响后续模式的创建和未来可采集的数据种类。

3.1.2模式存储的实现

系统中专门设计了数据表元数据模型和字段元数据模型,用来存储系统中所有的表、字段及其属性的元数据,系统模式的动态配置完全依赖这些元数据。其中数据表元数据模型主要用于存储模板文件中的每个表相关的信息如数据表原名、现名(为了防止重名由程序动态生成)、原表类型、创建人、创建时间、字段数、填表说明等信息,而字段元数据模型主要用于存储系统中所有表的字段名、字段类型、字段引用标志、字段注释和字段对应的表单控件类型等数据信息。

3.1.3模式配置的实现

系统目前支持以“仅结构”和“结构和数据”两种方式上传模板文件,在以“仅结构”的方式上传模板文件时,新建的模型表中只有一行样例数据,没有有效数据,所有字段的引用类型都为“手工输入”,默认的表单控件类型为“单行文本框”。而对于以“结构和数据”方式上传模板文件,新建的模型表中除了包含第一行样例数据外,系统还会把模板文件中原有的数据全部写入到模型表中,信息被采集人在填写数据时可以选择这些数据或者利用这些数据进行数据的查询、校验和整合等操作。这种情况下,默认的字段引用类型都为“自引用”,默认的表单控件类型为“可新增下拉菜单”。以上两种模板文件上传方式,字段的引用类型和其对应的表单控件类型都是固定统一的,无法满足用户在不同应用场合下的数据采集需求,因此系统提供了模式动态配置功能。

在模式配置模块中,字段引用类型、字段对应的表单控件类型、字段的具体引用内容是系统模式配置的核心内容,其中字段引用类型主要包括手工输入、自引用、限定值和引用其他表字段四种类型[3]。“手工输入”是指该字段完全由被采集人自己录入;“自引用”是指在信息采集时,该字段的值可以从模板中现有的数据或之前已经录入的数据中进行选择,大大减少信息录入量,并且可提高录入数据的规范化程度;“限定值”是指该字段的取值限定在一组特定的值之中,这组特定值可以从模板文件中上传,也可以直接在模式配置模块中设置;“引用其他表字段”是指该字段的取值可以直接引用自系统中现有的某个表的某个字段。

表单控件类型默认为“单行文本框”或“可新增下拉菜单”,其可选值包括常用的控件类型如单行文本框、多行文本框、可新增下拉菜单、普通下拉菜单、单选按钮、复选按钮、日期时间框、文件上传框等。根据字段类型、引用类型和采集数据特性以及使用的便利性,用户可进行自由配置。

具体引用内容默认情况下为空,当字段引用类型设置为“限定值”或“引用其他表字段”方式后,该项将记录具体的引用内容。如字段引用类型为“限定值”时,该项将保存该字段引用的具体限定值;字段引用类型为“引用其他表字段”时,该项将保存引用的表名和字段名;在“自引用”的情况下,该项主要用来保存指定字段是否可重复、是否可查询等标志信息[4]。

3.2 系统实现中的关键技术

3.2.1字段数据类型的识别

在系统的模式解析和转换过程中,用户的Excel模板文件只提供一行字段名,而字段名中并没有包含数据类型信息。要将其解析并转换成关系数据模型,则必须为每个字段指定一种数据类型,系统中每个字段数据类型的确定是非常关键的。

在本系统中主要是通过样例数据来识别和确定数据类型,但Apache POI对Excel单元格内容只识别为CELL_TYPE_STRING、CELL_TYPE_NUMERIC、CELL_TYPE_BOOLEAN、CELL_TYPE_FORMULA和CELL_TYPE_BLANK五种类型之一,而在实际应用和关系数据模型中则远不止这几种数据类型,再加上用户提供的样例数据的有限性和不规范性,使得实际情况更加复杂。如单元格内容为公式、电话号码、身份证号、QQ号的情况等,是定义为数字类型,还是字符类型呢?这就需要程序进行智能识别和模糊判断,针对各种不同类型的实际数据都要进行多重逻辑判断才能选择一个最佳的数据类型[5]。例如当模板数据中出现一串数字,程序首先以字符串的形式检测其长度,如果是15或18位,然后再以如下正则表达式 (d{14}[0-9a-zA-Z])|(d{17}[0-9a-zA-Z])对其进行识别,符合上述规则则识别为身份证号码,定义数据模型时则将该字段定义为字符型,否则将该字段定义为长整型。在某些情况下,程序确实无法判断时,则提示用户进行选择确定。

3.2.2模式动态配置

模式动态配置是实现动态可配置数据采集系统的关键技术模块,也是系统中最复杂的一个模块。在模板文件导入后,用户可以根据实际需求对各个字段的属性进行个性化配置,在本系统中用户可以对模式中各字段的数据类型(field_type)、表单类型(form_type)、字段引用类型(ref_flag)及其引用内容(ref_detail)进行动态配置[6]。在不同的模板导入方式下,其默认值是不同的,其中数据类型(field_type)是由模式解析模块根据样例数据来确定的。当以“仅结构”的方式导入模板时, form_type默认为普通文本框或者日期框(字段类型为日期型),ref_flag和ref_detail为空;当以“结构和数据”的方式导入模板时, form_type默认为可新增下拉菜单或者日期框(字段类型为日期型),ref_flag为“自引用”,ref_detail为空。

在模板导入后,用户还可以根据实际需求对各字段的相关特征进行动态个性化的配置,以使字段类型、表单类型能够很好地匹配并且具有较好的用户体验。如当ref_flag为“自引用”时,在ref_detail字段可以配置该字段是否可重复、是否可查询等标志,是否可重复标志决定在该字段上是否允许有重复取值,是否可查询标志决定是否可以根据该字段值从原始数据中查询其他字段值显示在表单中,以减少数据录入量,同时可对已有的数据进行验证;当ref_flag为“引用其他表字段”,在ref_detail字段可以配置引用系统中哪个表的哪个字段,同时form_type也会自动配置为可新增下拉菜单,方便用户重复使用系统现有的数据来完成数据的录入和整合。在配置过程中,系统还利用了JQuery技术实现了field_type、form_type、ref_flag之间的自动联动,如当field_type设置为日期型时,form_type自动配置为日期框,ref_flag自动配置为手动输入;当ref_flag配置为自引用类型时,form_type自动配置为可新增下拉菜单,如果你不希望该字段新增其他值,也可以手动将其配置为普通下拉菜单[7]。本系统目前已提供了丰富的模式动态配置功能,从而可以满足多种不同的应用场合,后期将逐步完善该功能,以适应更广泛的应用需求。

3.2.3数据的规范化处理

在以“结构和数据”方式导入模板文件时,模板文件中除了包含一行样例数据外,大多都还包含了大量的原始数据。由于不同用户的应用场合不同,这些原始数据内容则更是五花八门,然而在数据模型创建后,这些原始数据都要写入到数据库中,以便在后期数据采集时进行数据复用、校验和整合。写入时每个数据还必须与所在字段的数据类型保持一致,因此需要对这些数据进行规范化处理。针对文件中出现的各种非预期内容,如不规范单元格、空行空列、空白单元格、带公式的单元格、带格式的单元格、日期型数据的单元格等,系统也开发了复杂的业务处理逻辑。如日期型数据处理就是比较典型的复杂数据处理。在Excel数据中,日期型数据可能是日期型、也可能是日期时间型;有年月形式的,也有年月日形式的;有中文日期型,有英文日期型,还有以字符形式出现的日期。然而在Apache POI读取单元格内容时将英文日期识别为CELL_TYPE_NUMERIC(数字型),而将其他类型的日期都识别为CELL_TYPE_STRING(字符型),这就需要系统具有智能化的业务逻辑了,对读入的数据进行多层次的逻辑判断,然后再进行特定的处理。再比如对于单元格内容是公式的情况,系统目前的处理原则是先转换为数字,若转换为数字出错,则再转换为文本[8]。数据的规范化处理涉及的内容很广,需要考虑到方方面面,可采取的方案也很多。本系统主要通过了以下几点设计以最大程度地对各类数据进行规范化处理:

(1) 多层次的程序业务逻辑判断。

(2) 设置单元格批注和提供样例数据提醒用户。

(3) 通过指定字段类型和表单类型对录入的数据进行限制和规范。

(4) 通过客户端脚本对表单数据进行验证。

(5) 通过提取系统中已有数据列表供用户选择。

(6) 到指定数据库中进行异步数据验证。

(7) 给用户提供人工检查和修改环节。

4 结 语

本系统目前已在阿里云上测试运行,并已在本单位的多个部门展开应用,虽然基本数据采集功能已经实现,但在试运行过程中也发现了很多问题,如:系统的用户权限设置尚未处理,目前对页面的访问尚无权限控制,后期准备引入多层次用户权限控制,加强数据的安全和保密工作;在数据预览页面需增加按字段排序、筛选查看功能,增加分类导出等功能,改善用户体验。此外,系统对采集数据的进一步复用整合和简单的数据统计分析是未来主要的研究方向,这也是系统与大数据时代的进一步接轨,做好大数据处理流程中的数据采集和数据预处理等前期工作。

[1] 杨海素,刘婷婷,汪惠芬. 基于模板定制的数据采集系统研究[J]. 制造业自动化,2013, 35(10):59-62,65.

[2] 邵东青, 焦文英, 陈海飞,等. 一种内容可定制的数据采集系统的设计与实现[J]. 计算机应用与软件, 2012, 29(1):181-183,248.

[3] 高瑞明,刘旭丽.可定制数据采集技术的研究和实现[J]. 现代计算机(专业版), 2014(17):67-69.

[4] 陈明璨.通用数据采集系统的设计与实现[D].河南:郑州大学,2010.

[5] 罗腾元,吴勇.可定制野外数据采集系统设计[J]. 福建电脑,2014(8):26-28.

[6] 李贡湘.数据采集软件系统开发平台设计与实现[D].山东:中国海洋大学,2013.

[7] 童庆勇, 王盼卿, 李晓辉,等. 数据采集系统关键模块的研究与设计实现[J]. 科学技术与工程, 2007, 7(4):620-621,628.

[8] 金雯婷,张松.互联网大数据采集与处理的关键技术研究[J].中国金融电脑,2014(11):70-73.

猜你喜欢

表单数据表字段
带钩或不带钩选择方框批量自动换
移动App表单组件体验设计
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
浅谈台湾原版中文图书的编目经验
浅谈网页制作中表单的教学
使用智能表单提高工作效率
无正题名文献著录方法评述
无正题名文献著录方法评述