
| 出版日期:2003-05-12 总期号:1214 本年期号:33 |
|
实现ETL 重在应用
朱耿斌 BI运作所依靠的信息系统是一个由传统系统、不兼容数据源、数据库与应用所共同构成的复杂数据集合,各个部分之间不能彼此交流。从这个层面看,目前运行的应用系统是企业在花费了很大精力和财力构建的、不可替代的系统,尤其是系统的数据。而新建的BI系统目的就是要通过数据分析来辅助自己决策,恰恰这些数据的来源、格式不一样,导致了系统实施、数据整合的难度。此时,企业非常希望有一个全面的解决方案来解脱自己的困境,解决数据一致性与集成化问题,从而能够从所有传统环境与平台中采集数据,并利用一个单一解决方案对其进行高效的转换。这个解决方案就是ETL。 通常情况下,企业的数据源分布在各个子系统和节点中,利用ETL将各地方业务系统上的数据,通过自动化FTP或手动控制传到UNIX或NT服务器上进行数据抽取、清洗和转化处理,然后加载到数据仓库。因为现有业务数据源多,保证数据的一致性,真正理解数据的业务含义,跨越多平台、多系统整合数据,并最大可能地提高数据的质量,迎合业务需求不断变化的特性,这是ETL技术的关键所在。 可以肯定的是,ETL贯穿整个BI解决方案的全过程,完成整个系统的数据处理与调度。在这里,笔者主要从实际的角度上阐述如何使用ETL,包括数据抽取、数据传输、数据转换与清洗、数据加载、调度监控以及元数据管理。具体应用如下。 数据抽取 数据抽取主要是针对各个业务系统及不同网点的分散数据,充分理解数据定义后,规划需要的数据源及数据定义,制定可操作的数据源,制定增量抽取的定义。 确定如何抽取或查询源数据并非易事,因为它往往存储在多个地方,可能是一个RDMS、一个文本文件、一个Excel文件、一个DBF文件或其他类型文件,我们在连接时可以通过标准的连接工具比如ODBC或FTP等,而从设计的角度讲最好忽略一些连接问题,把主要精力集中在源数据如何映射目标数据上。 在移动的经营分析系统中,数据抽取的数据源是BOSS系统、OA系统等,而为了保证生产系统稳定地运行,ETL所抽取的数据就变成了对数据文件的处理。文件主要分为两类:一类是BOSS中的表文件,如用户信息表,要按照一定的规则周期性提取放到一个目录下(可以是固定目录);另一个是文本文件,如话单文件,要把它原样移到一个固定的目录下。在实施中,其步骤包括:建立系统的连接;读取数据提取规则参数表,确定提取的源表;根据源表、提取规则、最后一次提取的时间戳或流水号,生成提取动态SQL语句;查询出的数据根据输出文件拆分规则生成相应的文件(包含汇总记录),如果当天数据已全部生成,生成汇总记录文件;将生成的文件转移到公共文件夹中(报表系统获取数据目录),同时复制一份到备份文件夹。 数据传输 数据传输是通过网络负责把远程的数据文件FTP到本地目录下。在实施中,它的步骤包括:初始化参数表,如间隔时间、远程数据文件的存放位置、本地数据文件传路径,并连接到远程主机上;取远程数据文件列表,将其取至本地;根据远程数据文件列表,生成取数据文件的脚本,运行此脚本;完成取数据操作后,生成取回数据的列表,根据此列表生产删除远程数据文件的脚本,运行此脚本;将取回的数据文件移到指定文件夹中,并继续监控。 数据转换和清洗 数据转换主要是针对数据仓库建立的模型,通过一系列的转换来实现将数据从业务模型到分析模型,通过内建的库函数、自定义脚本或其他的扩展方式,实现了各种复杂的转换,并且支持调试环境,清楚地监控数据转换的状态。数据转换是真正将源数据变为目标数据的关键环节,它包括数据格式转换、数据类型转换、数据汇总计算、数据拼接等等。但这些工作可以在不同的过程中处理视具体情况而定,比如,可以在数据抽取时转换,也可以在数据加载时转换。 数据清洗主要是针对系统的各个环节可能出现的数据二义性、重复、不完整、违反业务规则等问题,允许通过试抽取,将有问题的纪录先剔除出来,根据实际情况调整相应的清洗操作。 我们数据文件进行处理时,所读入一个文件可能会被分配到三个文件当中。异常数据文件是在清洗过程中发现不合乎规则的记录。合法数据文件是没有违反规则的数据,异常数据文件跟合法数据文件的和应该是输入文件。初次汇总文件是经过初步汇总的文件,该汇总过程只依赖于输入文件内部,不能跟外部其它文件关联。在实施中的具体步骤包括:初始化参数表,如间隔时间、本地文件路径等,程序启动时或配置参数更改时(定时判断配置参数更改标志位)加载各类参数配置表;程序实时扫描源数据文件夹,如有新文件出现,根据文件名,选择相应处理模块;根据对应文件的清洗规则对数据文件进行行扫描,生成异常数据文件,合法数据生成合法数据文件;在进行数据的行扫描时,同时调用转换、汇总模块,生成汇总数据;程序根据生成的不同数据文件,同时生成汇总数据,同源数据的汇总文件进行对比,如出现不一致,提供系统预警。 数据加载入库 数据加载主要是将经过转换和清洗的数据加载到数据仓库里面,即入库,操作者可以通过数据文件直接装载或直连数据库的方式来进行数据装载,充分地体现其高效性。数据加载有两个部分:一部分是把合法数据文件装入回滚表中,该装入过程没有汇总部分;另一个部分是把初次汇总表加载到临时汇总表,根据不同类型的数据,可能会有二次汇总。当到临时汇总表的数据完毕以后,再把临时中间表的数据装入到中间表中。在实施中,其步骤包括:读取汇总数据文件、无需进行汇总的源数据文件或需换天后汇总的源数据文件,调用数据文件对应操作配置表,加载到相应数据表(中间表或回滚表)中;读取需进行实时汇总的合法数据文件,调用数据文件对应操作配置表,对数据库进行更新操作;程序根据生成的不同数据文件,同时生成汇总数据,同先前步骤的汇总文件进行对比,如出现不一致,提供系统预警。 统一调度 统一调度是ETL中较为重要的功能。它不但可以将源数据加载到数据仓库中,而且还可以更新数据集市。更重要的是,它还可以更新OLAP Server和挖掘模型数据。它在整个BI方案中扮演着总指挥、总调度的角色。其过程如下图所示。
ETL统一调度的过程 监控 数据监控主要是指监控ETL的整个过程。通过扫描ETL各模块、日志中的关键值,如记录时间等信息与当前的状态作比较,如果超过某一个值,则认为该模块运行可能出现问题,应告警。 在实施中,它的步骤包括:初始化每一个模块的正常规则或异常规则;周期性扫描每一个模块的日志文件,提取最后记录日志的关键信息跟初始化规则对比,如果异常,则告警;否则继续监控,从而实现对ETL的监控。 |
|||||||||||||||||||||||