The Data Warehouse ETL Toolkit
目录
前言及致谢....................................................................................................................................... 1
致谢........................................................................................................................................... 1
作者简介 ................................................................................................................................... 2
1 介绍 .............................................................................................................................................. 3
1.1 全书概览:两条并存的主线 ............................................................................................. 5
1.2 规划与设计主线 ................................................................................................................. 6
1.3 数据流主线 ......................................................................................................................... 8
1.4 本书如何组织 ................................................................................................................... 10
1.5 谁将阅读本书 ................................................................................................................... 16
1.6 总结 .................................................................................................................................. 16
第一部分 需求、现状和架构 ..................................................................................................... 18
2 一切围绕需求 .............................................................................................................................. 18
2.1 需求 .................................................................................................................................. 18
2.2 架构 .................................................................................................................................. 23
2.3 数据仓库的任务 ............................................................................................................... 35
2.4 ETL 小组的任务 ................................................................................................................ 40
3 ETL 数据结构 ............................................................................................................................... 41
3.1 是否集结数据 ................................................................................................................... 41
3.2 设计集结区 ....................................................................................................................... 43
3.3 ETL 系统中的数据结构 .................................................................................................... 47
3.4 规划和设计标准 ............................................................................................................... 59
3.5 总结 .................................................................................................................................. 62
第二部分 数据流 ......................................................................................................................... 64
4 抽取 ............................................................................................................................................. 64
4.1 第 1 部分:逻辑数据映射 ............................................................................................... 65
4.2 逻辑数据映射内部 ........................................................................................................... 67
4.3 创建逻辑数据映射 ........................................................................................................... 70
4.4 集成异构数据源 ............................................................................................................... 80
4.5 第 2 部分:从不同平台进行抽取的挑战 ....................................................................... 82
4.6 主机数据源 ....................................................................................................................... 83
4.7 平面文件........................................................................................................................... 97
4.8 XML 数据源 .................................................................................................................... 100
4.9 Web 日志数据源 ............................................................................................................ 104
4.10 ERP 系统数据源 ........................................................................................................... 108
4.11 第 3 部分:抽取变化数据 ........................................................................................... 111
4.12 总结 .............................................................................................................................. 117
I
5 清洗和规范化 ............................................................................................................................ 118
5.1 定义数据质量 ................................................................................................................. 120
5.2 假设 ................................................................................................................................ 120
5.3 第 1 部分:设计目标 ..................................................................................................... 122
5.4 第 2 部份:清洗提交报告 ............................................................................................. 129
5.5 第 3 部份:过滤器及其度量 ......................................................................................... 136
5.6 第 4 部分:规范化报表 ................................................................................................. 154
5.7 小结 ................................................................................................................................ 165
6 提交维表.................................................................................................................................... 167
6.1 维度的基础框架 ............................................................................................................. 167
6.2 维度的粒度 ..................................................................................................................... 171
6.3 维度的基本加载计划 ..................................................................................................... 171
6.4 扁平(Flat)维度和雪花(Snowflaked)维度 ............................................................ 172
6.5 日期与时间维 ................................................................................................................. 174
6.6 大维度............................................................................................................................. 177
6.7 小维度............................................................................................................................. 178
6.8 一个维表还是多个 ......................................................................................................... 180
6.9 角色维度......................................................................................................................... 181
6.10 其他维度的子维杜 ....................................................................................................... 182
6.11 退化维 .......................................................................................................................... 184
6.12 缓慢变化维................................................................................................................... 185
6.13 类型 1 缓慢变化维(覆盖) ....................................................................................... 185
6.14 类型 2 缓慢变化维(分区历史) ............................................................................... 187
6.15 第二种缓慢变化维的精确时间戳 ............................................................................... 191
6.16 类型 3 缓慢变化维(交替实体) ............................................................................... 193
6.17 混合缓慢变化维 ........................................................................................................... 195
6.18 滞后到达的维度记录和更正劣质数据 ....................................................................... 195
6.19 层次维和桥接表 ........................................................................................................... 197
6.20 不规则层次和桥接表 ................................................................................................... 200
6.21 技术关键点:生成层次桥接表 ................................................................................... 202
6.22 采用维度中的位置属性展现文本事实 ....................................................................... 207
6.23 小结 .............................................................................................................................. 209
7 提交事实表................................................................................................................................ 211
7.1 事实表基本结构 ............................................................................................................. 211
7.2 确保参照完整性 ............................................................................................................. 213
7.3 代理键管道 ..................................................................................................................... 215
7.4 基础粒度......................................................................................................................... 218
7.5 准备装载事实表 ............................................................................................................. 225
7.6 无事实的事实表 ............................................................................................................. 233
7.7 用类型 2 历史数据补充类型 1 事实表 ......................................................................... 234
7.8 优化更正......................................................................................................................... 235
7.9 事实表中多个度量单位 ................................................................................................. 237
7.10 在多币种中收集收入 ................................................................................................... 239
7.11 迟到的事实................................................................................................................... 240
II
7.12 聚合 .............................................................................................................................. 241
7.13 提交维度数据到 OLAP 立方体 .................................................................................... 248
7.14 总结 .............................................................................................................................. 253
第三部分 实施与运行 ................................................................................................................. 255
8 开发 ........................................................................................................................................... 255
8.1 当前市场上提供的 ETL 工具包 ..................................................................................... 256
8.2 当前脚本语言 ................................................................................................................. 258
8.3 时间是本质 ..................................................................................................................... 259
8.4 使用数据库的块加载工具加速数据插入 ..................................................................... 277
8.5 管理数据库特性来提高性能 ......................................................................................... 282
8.6 性能问题纠错 ................................................................................................................. 292
8.7 增长的 ETL 吞吐量 ......................................................................................................... 294
8.8 总结 ................................................................................................................................ 300
9 操作 ........................................................................................................................................... 302
9.1 调度和支持 ..................................................................................................................... 302
9.2 迁移到生产系统 ............................................................................................................. 315
9.3 清除历史数据 ................................................................................................................. 329
9.4 监控 ETL 系统 ................................................................................................................. 330
9.5ETL 过程调优 ................................................................................................................... 338
9.6ETL 系统安全 ................................................................................................................... 341
9.7 短期归档和恢复 ............................................................................................................. 343
9.8 长期归档和恢复 ............................................................................................................. 344
9.9 总结 ................................................................................................................................ 347
10 元数据 ..................................................................................................................................... 348
10.1 定义元数据................................................................................................................... 348
10.2 业务元数据................................................................................................................... 357
10.3 技术元数据................................................................................................................... 360
10.4 ETL 生成的元数据 ........................................................................................................ 364
10.5 元数据标准和实践 ....................................................................................................... 374
10.6 效果分析....................................................................................................................... 376
10.7 总结 .............................................................................................................................. 376
11.职责 ......................................................................................................................................... 378
11.1 计划和领导................................................................................................................... 378
11.2 管理项目....................................................................................................................... 385
11.3 总结 .............................................................................................................................. 409
第 4 部分 实时流 ETL 系统 ....................................................................................................... 411
12 实时 ETL 系统 .......................................................................................................................... 411
12.1 为什么要有实时 ETL .................................................................................................... 412
12.2 实时 ETL 的定义 ........................................................................................................... 413
12.3 实时数据仓库化的挑战和机遇 ................................................................................... 414
12.4 实时数据仓库的回顾 ................................................................................................... 414
12.5 需求分类....................................................................................................................... 419
12.6 实时 ETL 过程 ............................................................................................................... 426
13 结论 ......................................................................................................................................... 446
III
13.1 深化 ETL 的定义 ........................................................................................................... 446
13.2 数据仓库和 ETL 的未来 ............................................................................................... 448
IV
前言及致谢
The Data Warehouse ETL Toolkit
前言及致谢
致谢
首先我们要感谢阅读了数据仓库工具箱丛书的成千上万的读者,感谢你们对
于撰写这本数据仓库 ETL 书籍的大力支持和鼓励。我们确信还会不断地从你们—
—数据仓库的使用者和开发者——那里学习到更多的东西。
非常感谢 Jim Stagnitto,是他鼓励 Joe 开始此书,并给了他足够的信心完成该
项目。Jim 是事实上的第三作者,他在数据质量和实时 ETL 的章节中作出了主要
的创造性贡献。
另外还要感谢 Jeff Coster 和 Kim M.Knyal,他们在前/后加载处理和 ETL 项目管
理的讨论中做出了特殊的贡献。
我们有一个特别的读者小组,他们仔细阅读了本书手稿的第一版本,并给出
了大量有用的建议。一般来说,对于已经“完成”的手稿再做修改是非常令人头
疼的事,但是这种深层次的校读对于工具箱系列的书籍来说是一种传统,这次也
不例外,并且非常成功。以字母顺序,这些读者包括:Wouleta Ayele, Bob Becker,
Jan-Willem, Beldman, Ivan Chong, Maurice Frank, Mark Hodson, Paul Hoffman, Qi Jin,
David Lyle, Michael Martin, Joy Mundy, Rostislav Portnoy, Malathi Vellanki, Padmini
Ramanujan, Margy Ross, Jack Serra-Lima, 以及 Warren Thornthwaite。
我们还特别感谢 Robin Caserta(Joe 的妻子)和 Julie Kimball(Ralph 的妻子)
在整个项目期间给予的支持,还有孩子们 Tori Caserta, Brian Kimball, Sara(Kimball)
Smith 以及孙子 Abigail Smith(!),他们对于作者总是处于工作状态给予了充分
的理解和耐心。
最后,Wiley 计算机图书小组又一次成为了本书完成的主要原因。感谢你们,
Bob Elliott, Kevin Kent 和 Adaobi Obi Tulton。
1
前言及致谢
The Data Warehouse ETL Toolkit
作者简介
Ralph Kimball 博士,Kimball 集团的创始人,从 1982 年起就成为数据仓库领
域的领导者,也是当今最著名的演说家、咨询专家、教师和作家之一。他的书籍
包括<<数据仓库工具箱>>(Wiley,1996)、<<数据仓库生命周期工具箱>>
(Wiley,1998)、<>(Wiley,2000)和<<数据仓库工具箱
第二版>>(Wiley,2002)。他自 1995 年以来一直为<<智能企业>>杂志撰写专栏文
章,并获得了 1999 年度“读者最爱奖”。
Ralph 在斯坦福大学获得了电子工程学博士学位,论文题目是人-机系统设计。
他从 1972 年到 1982 年在 Xerox PARC 和 Xerox System 的开发部门任研究员、系统
开发经理和产品市场经理。由于他在 Xerox Star 工作站(第一个视窗、图标和鼠
标的商业产品)的系统设计工作,IEEE Human Factors Society 授予他 Alexander C.
Williams 奖。从 1982 年开始到 1986 年,Ralph 是 Metaphor 计算机系统公司(第
一家数据仓库公司)的应用部副总裁。在 Metaphor,Ralph 发明了“胶囊”工具,
这是图形化数据流界面的第一个商业实现,现在已经应用在所有 ETL 工具中。从
1986 年到 1992 年,Ralph 成为 Red Brick 系统公司的创始人和 CEO,该公司提供
一种非常快速的关系型数据库技术来实现决策支持。1992 年,Ralph 创办了 Ralph
Kimball 协会,在 2004 年这个协会演变成为 Kimball 集团。Kimball 集团是一个高
度专业化的数据仓库设计专家团体,这些专家因其在咨询、教育、演讲和著作方
面的成就而享有较高的声誉。
Joe Caserta 是 Caserta Concepts, LLC 的创始人和负责人。他是非常有影响力的
数据仓库专家,其专业技能来自于主流数据仓库工具和数据库的行业经验和实践
应用。Joe 就读于纽约哥伦比亚大学的数据库应用开发和设计专业。
2
1 介绍
The Data Warehouse ETL Toolkit
1 介绍
抽取-转换-加载(Extract-Transform-Load)系统是数据仓库的基础。一个设计
良好的 ETL 系统从源系统抽取数据,执行数据质量和一致性标准,然后规格化数
据,从而使分散的源数据可以集中在一起使用,最终再以可以展现的格式提交数
据,以便应用开发者可以创建应用系统,也使最终用户可以制定决策。该书围绕
这四个步骤进行组织。
ETL 系统既能成就数据仓库也能毁了它。因为虽然创建 ETL 系统是后台工作,
对于最终用户并不可见,但是对于实施和维护一个典型的数据仓库系统来说,它
所耗费的资源会很容易达到 70%。
ETL 系统能使数据明显地增值,它的工作也绝不是简单的把数据从源系统抽
取到数据仓库中。特别是,ETL 系统能够:
消除数据错误并纠正缺失数据
提供对于数据可信度的文档化衡量
为保护数据获取相互作用的数据流程
把多个源数据整合到一起
将数据进行结构化供最终用户使用
ETL 是个既简单又复杂的题目。几乎所有人都能理解 ETL 系统的基本作用:
把源中的数据加载到数据仓库中。另外大多数人也都认为在这个过程中清洗和转
换数据是必要的,这就是简单的观点。然而一个无法更改的事实是,紧接着的下
一步就要根据数据源、业务规则、现存软件系统以及特定的报表应用系统的不同,
将 ETL 系统分拆成成百上千的小的子过程。这带给我们的挑战是,既要耐心地对
待这上千个子过程,同时又要保持对整个 ETL 系统主要目标的简单视角。看看本
书是如何应对这一挑战的吧!
<<数据仓库 ETL 工具箱>>是创建成功的 ETL 系统的实践性向导。该书并不是
所有可行方法的调查和总结!相反,我们只是针对构建维度数据(Dimensional
Data)这样的目标而建立了一系列的一致性技巧。维度模型被证明是创建数据仓
3
1 介绍
The Data Warehouse ETL Toolkit
库最可预计的和最有效节省成本的方法。同时,由于不同数据仓库的维度结构大
都类似,因此我们可以重用大量的代码模块和特殊的开发逻辑。
该书是规划、设计、创建和运行数据仓库后台的路线图。我们将传统 ETL 中
的抽取、转换和加载扩展为更可操作的步骤:抽取、清洗、规格化和提交。当然
我们并没有试图将 ETL 改为 ECCD!
在本书中,你将学习到以下内容:
规划&设计你的 ETL 系统
从多种可能的架构中选出最合适的
对实施过程进行管理
管理日常的操作
为 ETL 过程建立开发/测试/生产环境
理解不同的后台数据结构,包括平面文件、规范化框架、XML 框架和星
型连接(维度)框架
分析和抽取源数据
创建完整的数据清洗子系统
将数据结构化为维度框架,以便更有效提交给最终用户、商务智能工具、
数据挖掘工具、OLAP 立方体和分析应用系统
使用同一种技术将数据有效地提交到高度集中的或分布的数据仓库
调整个 ETL 过程使性能达到最优
以上观点是 ETL 系统中主要的大问题,但是尽可能的,我们还会提供更细层
面上的技术细节:
针对列属性、结构、有效值和复杂业务规则实施数据清洗系统的关键执
行步骤
将多个源的异构数据规格化为标准化的维表和事实表
创建可复用的 ETL 模块用于处理维表中自然时间变量,例如,三种类型
4