刘双红 余建国
(郑州航空工业管理学院,河南 郑州 450005)
数据仓库技术在电信、金融、零售等多个行业都得到了广泛应用,在优化企业资源配置、提升企业的协同和资源共享,提高企业的核心竞争力和创新力等诸多方面发挥了重要作用。 但是由于数据仓库的数据来自于多种异质业务数据源及Web 数据,因而这些数据源可能分布在不同的网络中,以不同的方式存在不同的数据库中, 使用不同的硬件平台及不同的操作系统。 所以对系统中的数据进行严格地质量控制已成为系统面临的一个关键问题,否则基于劣质数据进行的分析非但不能达到预期的效果还会给企业带来损失。
由于数据仓库中的特殊作用,它不同于一般的数据库。 存储在数据仓库中的数据具有面向主题性,数据集成,数据的历史性,来源广泛、变化和支持决策的特征。
2.1.1 面向主题
主题是一个抽象的概念,是数据分类标准更高的水平。 每一个主题对应一个宏观分析,是用户关心的对企业决策最重要的方面。 一个主题通常与操作型信息系统的多种数据类型关联。 数据仓库中的所有数据都是以主题的形式组织,数据仓库的创建、使用,都围绕主题实现。 例如,企业将有几个特殊的数据库,如定价数据库,财务数据库,客户数据库,市场信息数据库,每个数据库等按主题来组织,如客户服务数据库记录客户的咨询和投诉情况,财务数据库记录客户的支出。
2.1.2 大量集成、随时间变化的数据
集成是指数据进入数据仓库之前必须通过数据处理和集成的,这是创建数据仓库的最重要的和复杂的步骤。 数据仓库中的数据不是直接来自源数据库系统。 原有的数据库系统每天记录每个业务处理,这些数据不适合分析,所以进入数据仓库前的数据必须经过统一,综合计算和处理,及对有用的数据项的处理分析,并且不需要全面的数据清除,并可能添加一些涉及到的外部数据,以有利于更好的决策分析。
2.1.3 来源广泛
数据仓库中和每个主题相对的数据来自与多个分散、不同的数据库系统,因此会有很多重复的和一致的,这些数据必须转换为统一的定义和标准,以消除重复,误差,确保数据的质量,以获得更可靠的结果数据分析。 企业的决策并不取决于企业内部的环境, 还需要决策者考虑企业外部环境的多种因素。因此,除了企业内部数据,一个企业的数据仓库中还包含了许多外部数据。
2.1.4 用于企业的决策
采用传统的数据库实现数据的分析和处理是困难的,因为传统数据库是为企业日常事务处理设计的。 数据仓库不仅通过联机分析处理手段分析数据, 而且提供通用的数据视图,支持高层次的决策分析。 数据仓库能从庞大的信息量中为用户获取战略信息的解决方案。 它是基于大规模数据库的决策支持系统环境的核心,弥补了传统数据库系统的缺点。
2.2 数据质量度量因素
数据是组织最具价值的资产之一, 高质量的数据可以使企业保持竞争力并在经济动荡时期立于不败之地。 根据全面质量管理(TQM),客观的度量机制必须要附加在主观的方法和建议之上来保证最终产品的质量。 下面给出TQM 中衡量数据质量重要的几个公共参数[1]:
有效性(Validity):指单个属性的值是否符合客观逻辑和业务逻辑。 如:客户资料中的地址邮编、电话区号、年龄、收入情况等是否在有效的取值范围之内。
准确性(Accuracy):是指数据是否真实客观。在信息有效性的基础上获得真实的数据。 例如,由于客户在个人隐私方面的自我保护,往往有意地提供不符合实际的信息,如谎报地址、收入、工作单位等等。
一致性(Consistency):指不同系统、不同业务之间关联的数据是否一致,包括源系统之间同一数据是否一致,源数据与抽取的数据是否一致,数据仓库内部各处理环节数据是否一致。
完整性(Completeness):指所有信息、属性是否按照业务规则完整填写,包括数据源是否完整、维度取值是否完整等。
惟一性(Uniqueness):数据值被约束成一组独特的条目,每个值只有惟一的类型(如主键值、索引等),与惟一性冲突的记录的比率(重复的主键值)。
数据仓库中的数据质量与数据源、 数据处理和应用都有关系。 数据仓库装载数据流程包括:ETL 是数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。 用户从数据源抽取出所需的数据,经过数据清洗、转换,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库。 在这个过程中,任何一个环节都会影响数据质量[2]。
3.1 数据源
数据源是数据仓库系统的基础。通常包括企业内部信息和外部信息。 内部信息包括原有操作型系统中的各种业务处理数据和各类文档数据。外部信息包括各类法律法规、市场信息和竞争对手的信息。所以数据仓库会集成多个数据源的数据,有来自关系数据库的,有来自ERP 数据库的,有来自普通文件的。
在一个单独的数据集可能会出现数据质量问题, 如那些发生在一个文件或数据库。 这些问题包括数据遗漏,数据异常,数据重复等等。 数据的遗漏意味着有一些记录的属性没有数据。 一般来说,这个问题是因为没有答案,或在市场调查的误操作,或一些在数据库或数据仓库中的数据被破坏。 数据异常是指数据库中的孤立点。 这些孤立的点不符合通用数据模型,它们与不同或相同的数据集的其他数据不一致。 例如,如果记录一个人的年龄150 岁,这个错误可能会在数据输入过程中产生的。 此外,孤立点可能是事情的真实反映,如一个公司总裁的薪水高于普通职工的收入时产生的孤立点。 数据重复性指的是在许多记录是一样的现象。
多数据源集成后数据仓库数据质量的发生尤为突出。 每个数据源都是为特定的目设计,部署和维护的。 换句话说,数据源的设计与开发是独立的。 结果是,数据源的数据库管理系统方面,如数据模型,模式的设计和公式有很大的不同。 模式相关的多个数据源的问题主要包括名称和结构冲突。 名称冲突的事实,一个相同的名字,代表不同的对象或不同的名字代表同一个对象;结构冲突的现象,同一对象采用不同的表示方法在不同来源的系统显示。 例如,在属性不同数据源的表,同一个对象可以在不同的组件结构的分析,数据模型和完整性约束。
3.2 ETL 过程
ETL 是构建数据仓库的重要一环, 用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去,这一过程非常复杂。 在ETL过程中,也会产生数据质量问题。
数据抽取:从源系统中抽取数据,一般要编制代码或者借助一些工具配置进行数据抽取,若编写的代码错误或工具配置不当,都会导致原始数据正确而抽取出来的数据不正确。
数据清洗、转换:数据清洗的任务是过滤那些不符合要求的数据,不符合要求的数据主要是有不完整的数据、错误的数据和重复的数据三大类。 数据转换的任务主要是进行不一致的数据转换、数据粒度的转换和一些商务规则的计算。 在数据清洗和转换的过程中,少有疏漏就会产生劣质数据,对数据质量造成影响。
数据加载:数据转换完成之后要进行数据加载,在系统运作时可能会出现重复加载或者加载失败的情况,会导致数据量异常。
这里试图建立一种质量分级, 并基于一套质量指标和质量验证架构来实现。 保持原貌,准确地进行前端展示是数据从数据源装载到数据仓库过程中的要求, 为了满足这样的需求,在系统将数据展现给最终用户之前需要对每次数据装载进行质量评级。
4.1 分级原则
具体可分为三级:第一级,数据准确,在预料的范围内产生可以接受的误差,可以提交前端展现,交付使用;第二级,数据可疑,需要进一步分离异常数据,定位可疑原因,查明原因确认后,可以提交;第三级:数据错误,需定位具体原因,重新装载,直至达到第二级以上质量标准以后方可提交[3]。 要实现质量分级需要有一个足够的质量验证架构能够准确地表达这些级别,保证数据质量逐渐从第三级通往第二、一级。
4.2 数据表象
建立满足质量分级的一套架构,不光要有一套技术架构,还需要再定义一套质量指标,基于这些指标才能进行某种规则的运算然后再进行质量分级。
一般情况下,数据的数值变化不能有异常的波动,出现零值或是特别大的值,这些一般都被怀疑是有问题的。 质量验证架构就要解决上面提到的三种情况,数值波动、偏离标准和违背逻辑,称其为“数据表象”,它的具体表现就是一系列指标,例如数值增长率、误差率等。 如果已经有一个指标标准,例如生产系统的报表,那么它就成为标准,如果发现数据仓库中统计的指标和标准值不一致,在不能说明标准存在问题并排除外部原因的情况下,应查找数据处理是否存在问题,数据处理的规则是否正确、ETL 流程是否顺畅、实现方法是否错误等。
4.3 数据稽核
数据稽核是数据质量管控的一个核心内容, 重点就是实现数据的完整性和一致性检查,提升数据质量。 在数据处理过程中,为ETL 过程的每一步留下操作、稽核记录,以作为数据表象和质量分级的底层支持,这一步我们可以称为“数据稽核”。
“稽核”根据预定义的数据稽核和校验规则,对数据进行差异分析和异常分析,一般分为总量、分量和标准量稽核。 总量稽核,在两个相邻环节中,对数据的总量进行验证。 总量指标包括:总记录数,所有度量指标的总值、均值等。 总量正确说明数据没有被丢弃,没有不符合装载逻辑规则的脏数据存在。 总量不正确, 则需要检查本环节装载日志中是否有被抛弃的记录,如果没有数据丢失,则需要检查数据运算逻辑规则。 分量稽核是指对相邻的两个环节中,在总量正确的前提下,对数据分布情况的稽核,在这个过程中,需要对每个维度上分布的度量进行查询,如果数据在每个维上的分布都正确,则在组合维查询时数据也正确,可以保证多维分析的正确性。 标准量稽核,则是用一组数据的统计值和标准值对比[4]。
稽核应该在每个ETL 环节运行完之后及时进行, 保证每个环节都得到验证,输出数据稽核报告,如果发现数据不一致,并产生警告信息发送给系统管理员,避免下一环节使用错误数据继续装载。
4.4 ETL 单元
ETL 单元是不能细分的ETL 过程, 从数据源到数据仓库及数据展现,通过若干个ETL 处理完成。例如可以将抽取、转换放在一个ETL 单元中,抽取和转换只能同时运行,而如果将他们分作两个单元,可以分别运行,这有利于错误恢复操作。 ETL单元的细分程度应该依据具体应用。 ETL 单元在质量架构中,是数据稽核的最小单位。通过控制每个ETL 单元的入口、出口,稽核流入和流出的数据。
4.5 数据质量分级框架
面对海量数据, 人工发现其中的潜在的错误, 是不现实的,非自动化的行为根本无法保证数据质量检查可以成为例行的工作,也就无法保证质量。 这需要一个自动化系统来帮助实现,功能框架包括如下功能:
(1)定义管理:定义ETL 单元、元数据;定义数据的度量、度量脚本以及表象指标。 定义ETL 单元遵循先小后大,循序渐进的原则。大的ETL 单元容易忽略内部的过程。因此,通常先将一个表的装载或中间数据生成定义成一个小的ETL 单元。当系统运行稳定,数据质量逐渐改善以后,再去掉一些小ETL 单元,提高效率。
(2)配置管理:配置稽核流程、数据稽核规则,对数据质量检查规则、数据质量任务、考核规则进行维护配置。
(3)执行管理:数据质量任务的分派、处理、审核、同步、监控。
(4)报表管理:提供数据质量相关报表以及对于考核结果的展示和查询。
(5)分级管理:根据稽核报告及分级原则,形成数据质量分级结果。
讨论了数据仓库中数据质量管理的问题, 结合数据源及ETL 过程对数据质量问题进行分析, 建立了数据质量分级体系,并给出了具体的功能架构,为数据仓库中数据质量的控制提供了一种有效、可行的方法。 今后将以该质量分级体系为基础,进一步优化设计该体系结构并实现其分级功能。
[1]袁满,张雪.一种基于规则的数据质量评价模型[J].西安:计算机技术与发展,2013,3(23):81-84
[2]刘双红.数据仓库中数据质量问题研究[J].郑州:光盘技术,2008,(12):16-17
[3]dwdmstudio. 数据仓库中的数据稽核方法.http://www.itpub.net/thread-378952-1-1.html,2013.6.20
[4]happysboy. 谈谈数据质量.http://dwdmstudio.bokee.com/167070.html,2013.5.26