不论是高校还是其他行业,管理信息系统数据质量的重要性不言而喻。在业务层面,数据质量问题不仅会影响单点业务的正常开展,还会影响与该业务相关的其他业务顺利开展;在决策层面,数据质量问题会直接影响到管理层的决策依据是否准确、客观。
高校各类业务较多,应用系统繁杂,在系统建设过程中往往会忽视数据质量的重要性,没有采取足够的措施,导致随着系统和数据的逐步深入应用,数据质量问题一点点暴露出来,比如数据的有效性、准确性、一致性等。最坏的结果就是用户感觉系统和数据是不可信的,最终放弃了使用系统,这样也就失去了建设系统的意义。
从高校数据质量管理工作进展情况来看,在思想上目前还没有引起高校CIO的足够重视,在管理制度、技术措施等方面还没有开展更多有效工作。数据质量是一个非常复杂的系统性问题,解决数据质量问题应该从数据质量管理制度、应用系统建设、数据质量监控三个方面开展,并且三者要有机结合形成联动,单靠某一方面的努力是不够的。我们要清楚一点,再完美的系统都存在数据质量问题,数据质量监控只是一种必不可少的补充手段,已经到了解决问题的下游。本文主要介绍一种基于规则库的数据质量自动监控平台实现方法及其在推动数据质量管理方面的重要作用。
监控平台架构
数据质量监控平台主要包括三个部分:数据层、功能层和应用层,平台架构如图1所示。
1.数据层
数据层定义了数据质量监控的对象,主要是各核心业务系统的数据,如人事系统、教学系统、科研系统、学生系统等。
2.功能层
功能层是数据质量监控平台的核心部分,包括数据质量检查规则的定义、数据质量检查规则脚本、检查规则执行引擎、数据质量检查规则执行情况监控等。
3.应用层
数据质量检查结果可以通过两种方式访问:一种是通过邮件订阅方式将数据质量检查结果发给相关人员,另一种方式利用前端展示工具(如MicroStrategy、Cognos、Tableau等)开发数据质量在线分析报表、仪表盘、分析报告等。前端展示报表不仅能够查看汇总数据,而且能够通过钻取功能查看明细数据以便业务人员能够准确定位到业务系统的错误数据。
数据质量监控规则库是监控平台的核心,用来存放用户根据数据质量标准定义的数据质量检查规则脚本,供监控引擎读取并执行,同时将检查产生的结果存放到监控结果表中,表1是监控规则表的数据结构,其中的核心字段解释如下:
system_flag:系统标识,用来标记监控规则属于哪个业务系。
scan_rule:监控规则,是可执行的SQL脚本,监控规则主要分两类,一类是单纯的数据校验规则,如检查是否为NULL、是否与字典表一致等;另一类是业务校验规则,有些数据从数据库角度出发是没有问题的,但是不一定符合业务逻辑,如项目的结项时间早于立项时间等。
scan_rule_desc:监控规则描述信息,用来准确说明监控规则脚本的检查内容、检查逻辑等信息,供业务人员和技术人员详细了解监控规则含义。
scan_object:监控对象,用来说明监控规则检查的数据对象或业务实体。
check_type_name:检查类型名称,指监控规则检查数据质量的哪一种问题,如完整性、有效性、准确性、唯一性、一致性、合理性。
scan_period:扫描周期,指该监控规则执行的频率,如每天、每周、每月。
status:规则状态,指该监控规则是否启用,1表示启用,0表示关闭,监控引擎不会执行已经关闭的规则。
last_scan_date:最近扫描时间,记录该规则上一次执行时间,用来和扫描周期联合计算当前时间该监控规则是否可执行。
output_result:输出结果,指监控规则执行后输出的内容,让数据质量管理人员准确知道是什么数据存在问题,方便在业务系统中查找、修改。
scan_scope:扫描范围,指监控规则扫描哪些业务数据,有并不是所有的业务数据都需要去检查,扫描范围在监控规则脚本中也有相应的体现。
rule_level:规则级别,指该监控规则对应的数据质量问题对业务的影响程度,一般可分为高、中、低三个级别,高级别的数据质量问题必须在第一时间解决,否则会影响业务的正常开展。
module_name:系统模块名称,指监控规则对应业务系统中哪个功能模块,主要用来将问题数据按系统功能模块来分类。
charger_email:数据质量负责人邮箱,可以将该规则检查的结果发生到负责人邮箱中,方便查看问题数据。
表2 是监控结果表的数据结构,该表用来存放某监控规则在相应的扫描时间点检查出来的结果数据,通过scan_rule_id与监控规则表相关联就能知道结果数据的详细信息。
表3是监控规则库中教学系统相关的一些监控规则实例,由于排版问题只列出规则的核心字段。
监控引擎是数据质量监控平台的发动机,负责执行监控脚本并产生监控结果,监控引擎是一个可供调度程序定时执行的存储过程,需要部署在一个具有读取其他业务库的数据库用户下,监控引擎执行流程如图2所示,具体执行过程说明如下:
1.通过调度程序定时触发监控引擎执行,监控引擎可以根据实际情况灵活设置调度时间,一般设置在凌晨调度,减少对业务系统的影响。
2.监控引擎顺序读取规则库中的数据质量检查规则,判断规则是否有效、判断规则是否满足扫描周期。满足条件后执行检查规则,并将检查结果输出到结果表中。
3.一条规则执行完成后,更新该规则的last_scan_date(最近扫描时间)字段。
4.将监控规则执行是否成功记录到日志表,尤其是执行失败的规则,并将日志发送给系统管理员,以便及时修复问题。
5.执行完最后一条规则结束监控引擎的一次运行,同时将检查结果以报告的形式发送给相关业务人员。
监控结果展现
数据质量监控结果可以通过两种方式提供给相关业务人员,一种是在线可视化展示,业务人员可以随时直观地了解数据质量整体情况和详细情况,便于整改问题数据;另一种是通过邮件方式定期为业务人员推送数据质量报告。图3是用数据可视化工具Tableau 开发的数据质量结果汇总仪表盘,通过该仪表盘可以查看当天每个系统、每条规则数据质量情况,通过钻取功能可以查看明细数据,方便准确定位具体的问题数据,以便在业务系统中修改。
图4是数据质量变化趋势仪表盘,该仪表盘可以展示每个系统、每条规则近30天数据质量变化趋势,有助于业务人员了解业务系统数据质量的变化情况,并采取相应的整改措施。
本文介绍的数据质量监控平台具有灵活部署、规则库动态扩展、调度按需配置等特点,技术人员根据具体数据问题可以灵活地自定义监控规则,对系统运行中发现的数据质量问题进行统一监控和管理。数据质量监控平台是解决数据质量问题的有效手段之一,为技术人员和业务人员提供了一个了解数据质量的便捷途径,能够有效地支持业务人员整改问题数据。高质量的数据不仅能够支撑日常业务顺利开展,还能够为决策支持系统的建设打下良好基础,该平台将成为打造绿色数据生态环境的有力支撑工具。
(作者单位为上海财经大学信息化办公室)