1、统一数据交换池项目ETL 工具软件及产品现场支持服务竞争性谈判提交文件之六.二.四ProfileStage 白皮书之一北京先进数通信息技术有限公司2004 年 10 月 21 日本文件涉及信息为北京先进数通信息技术有限公司专有信息,敬请视同机密文件处理。除因需要而得到授权的中国建设银行及本公司有关人员外,请勿以任何形式向他人或任何第三方透露。中国建设银行统一数据交换池项目-产品白皮书第 2 页目 录1. Ascential 企业数据综合优势 .32. 元数据的重要性 .43. 手工处理的危险 .54. Ascential ProfileStage 优势 .75. 列分析 .96. 表分析 .1
2、07. 交叉表分析 .118. 标准化 .119. 转换映射编辑 .1210. 对 ETL 工具的支持 .1211. Ascential ProfileStage 是任何数据综合项目的必要条件 .1212. 关于 Ascential 软件 .14中国建设银行统一数据交换池项目-产品白皮书第 3 页1. Ascential 企业数据综合优势在任何电子商务中心, 用户关系管理(CRM) , 企业资源计划(ERP) , 供应链管理(SCM) ,商业智能(BI) ,数据仓库或数据集市项目是数据综合的必要条件。 软件供应商已经销售的多种产品使企业能够完成数据综合项目。 但是,一直没有单一供应商为端对端的
3、企业数据综合项目提供功能完善的产品。 用户必须依赖供应商拼凑的产品, 满足他们在数据概括,ETL,数据质量和元数据管理上的技术需要。 现在用 Ascential ProfileStage 工具, Ascential 软件提供一个源自单个供应商的,功能完善的,具有易建立的、自动的、易使用的端对端的企业数据管理技术。 Ascential ProfileStage 是 Ascential 的数据概括软件,它使分析源数据和建立企业数据管理系统的过程自动化、简单化。 Ascential ProfileStage 使用复杂的逆向工程处理,允许用户把原始数据装进软件, 并且自动接收源数据的完整分析。Asce
4、ntial ProfileStage 软件逆转来自原始数据的工程师元数据。Ascential ProfileStage 分析源数据、为目标数据库提出建议,例如主关键字,外关键字,表分裂,标准化,并观察数据。 然后, Ascential ProfileStage 使用这些信息建造数据模型并且优化目标数据库定义。 Ascential ProfileStage 靠全面理解元数据并且产生一个 Ascential DataStage ETL 处理合并数据,允许用户集成多个不同的系统。因为代码自动生成,实施速度戏剧性加快。 由于元数据基于实际源数据,准确性是 100%,避免了编码、装载、爆炸的现象。 因此
5、避免了通常数据综合项目遇到的那些问题。元数据 寻求从周围企业组合数据的所有信息技术项目都挣扎在同样的岩石上:元数据。元数据是技术术语,是用来描述数据怎样被使用和捕获的学问。元数据是数据的结构, 即所用域的类型,哪些域是关键字,域的长度,数据之间的相互关系,和数中国建设银行统一数据交换池项目-产品白皮书第 4 页据的其他信息。 例如,在顾客服务部门的顾客电话(工作电话) 和在运送部门的顾客电话(家庭电话)的元数据也许是不同的。由于 Ascential ProfileStage,项目能自动避免在数据库里存有错误的电话号码的问题。2. 元数据的重要性 分析家研究显示超过百分之 75%的数据综合项目不
6、是超出预算的限制就是彻底失败。这些项目或者不能提供必需的特性,超出预算,或者在完成之前被取消。为什么这么高的失败率? 在很大程度上, 传统的数据综合方法采取下列步骤:1) 分析用户的需求并且建立目标数据库说明书: 在访问用户之后,为数据库模型设计主要方案,该方案将回答所有的、用户想要的目标应用要回答的问题。2) 分析可利用的数据源: 一套来自旧系统、操作系统、等等的数据,为了目标数据库,而被编辑分析,以确定他们的关联性。 可能得不到数据源的文档,或者可能文档是不正确的。依据一系列涉及源数据的样品来识别数据的特性。3) 建立一套源数据到目标数据库的映射: 设计一个把各种各样的数据源转换成目标的计
7、划。 通常,用 ETL 工具或手编码程序来完成这步。 4) 准备数据: 源数据被装载到集结地区,被整理、清洁,并转换为目标数据存储所需的形式。 为规范数据和连接纪录,数据质量软件可以部署在这个阶段。 5) 装载数据: 数据从这个集结地区移进目标应用区域。 这步包括要报告的格式化数据。这手工方法的主要弱点在于它做了个假定,应用所必需的数据实际上可以从数据源中获得。 很多公司在数据综合项目上已经花费了数百万美元,仅仅发现源数据不支持他们已经为目标数据库建立的模型。由于整个过程由一系列杂乱无章的、通常由程序员独立小组手工完成的步骤组成,而每步之间的不连续性经常导致灾难发生。公司通常在第 3 和第 4
8、 步上花费他们的工程预算的 80%。 令人遗憾的是,详细中国建设银行统一数据交换池项目-产品白皮书第 5 页说明一套源数据到目标数据的映射的实际结构,仅是集成多个数据源整体任务的一小部份。实际工作是决策的智能过程: 在源数据里确实存有什么? 数据是怎样组织的? 数据如何恰当的在目标数据库规划中表示? 我们能怎样将这些源数据和目标数据对应起来? 通常,几乎不了解源数据的性质,步骤 2 的成功可能很小,并且也妨碍了随后步骤的成功。大多数超出预算或完全失败的数据综合项目是由于缺乏对元数据的理解。如果没有自动化元数据逆向工程工具,开发者要亲自调查源数据。旧系统元数据的文档通常是很不完全的或者根本就不存
9、在。 通常能解释数据的人员已经离开公司。对数据仅使用偶然的推测而不是内容完整的分析。这导致在开发周期中,综合源数据往往被错误地修改调整进入目标数据存储。元数据里的错误不是在设计阶段被发现而是反映在产品系统中。正如史蒂夫 McConnell 所指出的, . 如果一个瑕疵在早期(在需求或设计期间)未被发觉,在后期,则需花费 10 到 100 倍的时间去纠正。 (1) 在数据综合情况下, 对试图未真实了解源数据的性质就开始手工建立目标数据库处理数据的企业来说,这将产生重大的经济损失。难怪在 W .H. Inmon 的书里论述数据仓库时说, 一般地,预计建立数据仓库的 80%的工作是任务的提取、转换和
10、装载。(2) 确实, 花在数据综合上的 50%的时间是设法了解源数据。(3) 缺乏能在早期查出 ETL 处理过程中存在的问题的工具,就要花费企业数据仓库预算中的大部分资金。3. 手工处理的危险 只要数据综合进程由许多独立步骤组成,这些工程的故障率和费用将保持一个高中国建设银行统一数据交换池项目-产品白皮书第 6 页水平。 数据定义与数据可能不相配, 数据可能是无效的, 源数据文档可能确实不存在,而且当设法把所有步骤集成到一个高效的实践中时,问题经常出现。每当在某些源数据中有致命错误,一系列步骤必须被重复执行,这即费力又费钱。如果没有使用 Ascential ProfileStage,数据综合项
11、目有很多缺陷要克服,这是昂贵的并且能导致整个项目失败。 缺乏能发现潜在的集成问题并且能给出实际数据的准确说明的数据描述软件,经常导致企业花费他们项目预算中不必要的规模可观的资金,而 Ascential ProfileStage 可避免该问题。例如: 元数据与实际数据不匹配。 通过多种方法,数据已经与正确的元数据之间存在差异。 因此, 数据的描述是错误的, 但直到项目结尾的测试/ 调试阶段才发现这错误, 它是在规格设计时就发现问题所需费用的 10 到 100 倍。 现有的数据经常无效。 例如,在新系统里日期域可能包含无效日期,譬如在MMDDYY 和 YY YYMMDD 之间的差别。 源数据的文档
12、不存在或者不准确。 开发应用软件生成源数据的那些程序员已经离开公司。 保证是独特的并且能被用作关键字的域已被复制并引起拒绝。 保证是一定类型的域只输入了 98%的事例,但 2%的例外事例却是真正合法的数据并能告诉我们某些域的真实含义。 目标系统把与原始资料不同的数据类型用于数据元素。 无效数据存在在旧系统里,但是没被表示为 NULL,而是作为空格或者零。 以前两个单独系统合并,为代码值建立了相冲突的域值。 例如, 对未来期望值,公司使用 1- 10 的范围表示,公司 B 使用 F 的范围表示,而新公司的文档指出这个域是数字并且具有 1-10 的数值。 数据元素代码值在目标系统里不同。 例如,种
13、族起源的旧代码可能被转换成新值。 数据元素之间的关系在原来系统里不存在。这个问题由数据标准化而引起。例如,标准化。 COBOL 纪录也许要求综合多张表。这一过程的具体的例子将是把一个记录中的中国建设银行统一数据交换池项目-产品白皮书第 7 页COBOL 阵列移到一张单独的表里。 假设依赖关系是不正确的。 例如,发票和发票的部分之间的关系根据说明是一对多的关系,但有很多发票没有相应的部分。 原说明中声称是冗余的域而实际上却不是。例如, 用户可能告诉我们那两栏可能在数据模型标准化期间消除, 但数据里的实际值表明存在一种关系,这与我们所理解的不相同。 商业惯例已经改变了旧系统的定义,导致了不同的取值
14、范围。 目标数据库必须从基于源数据库的数据模型手工建造出来。这是容易出错的过程,可能导致缺少或丢失数据, 同样,在再建立存在于源数据库的关系的过程中也容易出现错误。 由于进度表的压力,在手工开发期间文档经常被忽略。这样在后续的周期中对数据综合进行修改将导致更多的错误出现。 在确认设计的正确性时,由于缺乏文档依据,将导致知识丰富的最终用户和其他股东不能有效参与。 在后续的过程中,来自这部分数据的输入经常远离数据的正常值,在实用数据库里经常作为无效数据。 当项目增加人员时,使用手工方法做 ETL 的范围巨大的大项目将产生不可避免的交流问题,导致生产力进一步损耗和开发进程的减缓。 整个 ETL 处理
15、成为一系列循环,一再重复处理过程,调试结果数据库,而不是核实定义。 综合项目的范围是未知的。一般使用最佳的预测,并且迅速被在测试调试阶段所要求的多次重复 ETL 周期而超出。 由于超出限度,项目最终被取消,项目研究小组的努力没有任何成果。 看起来可行的项目实际上比最初计划昂贵很多,该项目应及早取消,以节省大量资金,让项目研究小组工作在正确的轨道上。4. Ascential ProfileStage 优势Ascential ProfileStage 不假定用户数据的内容。 用户只需要提供记录结构的中国建设银行统一数据交换池项目-产品白皮书第 8 页说明。 Ascential ProfileSta
16、ge 能读任何源数据, 自动地分析并完全地描述出数据,以便准确无误的产生那些数据的特性(以及那些元数据) 。特性包括表,列,可能的关键字和数据中的相互关系。 一旦知道并证实了这些特性,Ascential ProfileStage 自动产生一标准化的目标数据库配置。 商业智能报告,和源数据到目标数据库的转换全部被自动指定为这目标数据库的解释部分。在理解源数据之后, 综合数据项目研究小组仍然面临令人生畏的挑战,使用有意义的规则把数据转换到关系数据库里去。 使用传统的多级处理时,经常在生产系统里手工调试在项目设计里犯的错误。Ascential ProfileStage 使这个过程自动化,为目标数据库
17、提供建议,使用户能够灵活编辑修改以获得尽可能好最终结果。用 Ascential ProfileStage,整个过程能很容易地加快。 Ascential ProfileStage 方法由两项基本的活动组成:1. 分析: 分析源数据; 从用户那里获得确认,证实已经被推断了的源数据是正确的。 建议目标规范化、标准化,为到达目标提供一个健康的环境。 2. 创建: 自动为新数据库规划书和物理数据库产生映射和 DDL,以及进行移植的ETL 程序。 第一部分分析在于为建立源数据存储库广泛地描绘出源数据。这描绘确定数据和存在于各种各样元素之间的关系的特征。 分析的 第一个类型被称为列分析。中国建设银行统一数据
18、交换池项目-产品白皮书第 9 页5. 列分析 列分析在源数据里提供详细的关于域的信息,包括: 范围: 表明数据的实际范围,找到超出规定范围的数值。 例如,10 字符数字字段可转换成带符号的 2 字节整数,但是实际范围将需要 4 个储存字节。 唯一值: 这个域是关键字候选域吗? 隐含类型: 根据数据形式, 类型属于已知类型的一种,例如整数,浮点数,字符变量和多种日期格式类型。 尺寸: 值的大小可能是未知的,特别是在限定的输入数据的实例中。 频率: 计算值在数据内出现的次数。 用于确定某一数值是否真是编码值。 分布类型:值的分布表现形式。 某一确定数值超出 N 的标界,这是否违规了?能用多个数据表
19、示一个代码值域。 空/非空类型。 用 NULL、零还是空白表示空值? 有空值吗? 用户建议转换类型。 求值时,用户可为源数据指定转换类型。例如,各种各样的日期元素可以被规范化。 普通数据类型。 数据符合普通数据类型的模式吗?如电话号码,邮政编码,社会安全号码,等等。中国建设银行统一数据交换池项目-产品白皮书第 10 页列分析是数据分析过程的重要阶段。 由于 AscentialProfileStage 用自动的方法运行详尽的列分析,显著减少了了解数据的必要时间,同时消除了手工错误。 通过列分析获得的信息以直接的、容易使用的方式提供给用户。用户能依据事实而不是臆想或异想天开地推测来确定假定数据的有
20、效性。 由于 Ascential ProfileStage 掌握细节,经验丰富的最终用户和其他股东能被领入过程核实困难的项目。有关源数据的任何现有的有效文献可以被核实。列分析之后,在列里的元数据不再有疑问。 仅这一特性在最后的综合里就能显著减少水平瑕疵, 极大的节省成本。列分析展示了大量的潜在数据,但这只是冰山的一角。 当经常执行对源数据的完整数据库的列分析时,创建源数据的实例分析样本,用于下一个分析期间的分析。 通过利用数据的分析样品,大量计算的运行性能被戏剧性的改进了。在列分析期间获得的信息将在随后各阶段中使用, 同样源数据的详细信息将装载到元数据贮藏库。 在列分析完成之后,用户将准备表分析。 6. 表分析表分析是在一张表内找出列之间的关系。 用这些关系计算功能的依赖性。 Mannila 和 Raiha 定义功能的依赖性为:功能依赖性 X _ Y 表明,对于被给定值与属