1 ETL入门正则表达式
1.1 OLTP和数据仓库对比数据库
1.2 ETL是什么编程
1.2.1 ETL解决方案的演化过程安全
1.2.2 ETL基本构成服务器
1.3 ETL、ELT和EII多线程
1.3.1 ETL架构
1.3.2 EII:虚拟数据整合工具
1.4 数据整合面临的挑战性能
1.4.1 方法论:敏捷BI测试
1.4.2 ETL设计
1.4.3 获取数据
1.4.4 数据质量
1.5 ETL工具的功能
1.5.1 连接
1.5.2 独立平台
1.5.3 数据规模
1.5.4 设计灵活性
1.5.5 复用性
1.5.6 扩展性
1.5.7 数据转换
1.5.8 测试和调试
1.5.9 血统和影响分析
1.5.10 日志和审计
1.6 小结
2 Kettle基本概念
2.1 设计原则
2.2 Kettle涉及模块
2.2.1 转换
2.2.2 做业
2.2.3 转换或做业的元数据
2.2.4 数据库链接
2.2.5 工具
2.2.6 资源库
2.2.7 虚拟文件系统
2.3 参数和变量
2.3.1 定义变量
2.3.2 明明参数
2.3.3 使用变量
2.4 可视化编程
2.4.1 开始
2.4.2 建立新的步骤
2.4.3 放在一块儿
2.5 小洁
3 安装和配置
3.1 Kettle软件概览
3.1.1 集成开发环境:Spoon
3.1.2 命令行启动:Kitchen和Pan
3.1.3 做业服务器:Carte
3.1.4 Enar.bat和encr.sh
3.2 安装
3.2.1 Java环境
3.2.2 安装Kettle
3.3 配置
3.3.1 配置文件和.Kettle目录
3.3.2 用于启动Kettle的Shell脚本
3.3.3 管理JDBC驱动
3.4 小结
4 ETL示例解决方案——SaKila
4.1 Sakila
4.1.1 Sakila示例数据库
4.1.2 租赁业务的星型模型
4.2 预备知识和一些基础的Spoon技巧
4.2.1 安装ETL解决方案
4.2.2 Spoon使用
4.3 ETL实例解决方案
4.3.1 生成静态维度
4.3.2 循环加载
4.4 小结
5 ETL子系统
5.1 34种子系统介绍
5.1.1 抽取
5.1.2 清洗和更正数据
5.1.3 数据发布
5.1.4 管理ETL环境
5.2 小结
6 数据抽取
6.1 Kettle数据抽取概览
6.1.1 文件抽取
6.1.2 数据库抽取
6.1.3 Web数据抽取
6.1.4 基于流的和实时的抽取
6.2 处理ERP和CRM系统
6.2.1 ERP挑战
6.2.2 Kettle ERP插件
6.2.3 处理SAP数据
6.2.4 ERP和CDC问题
6.3 数据剖析
6.4 CDC:变动数据捕获
6.4.1 基于源数据的CDC
6.4.2 基于触发器的CDC
6.4.3 基于快照的CDC
6.4.4 基于日志的CDC
6.4.5 哪一个CDC方案更适合你
6.5 发布数据
6.6 小结
7 清洗和校检
7.1 数据清洗
7.1.1 数据清洗步骤
7.1.2 使用参照表
7.1.3 数据校验
7.2 错误处理
7.2.1 处理过程错误
7.2.2 转换错误
7.2.3 处理数据(校验)错误
7.3 审计数据和过程质量
7.4 数据排重
7.4.1 去除完成重复的数据
7.4.2 不彻底重复问题
7.4.3 设计排查重复记录的转换
7.5 脚本
7.5.1 公式
7.5.2 Java脚本
7.5.3 用户自定义Java表达式
7.5.4 正则表达式
7.6 小结
8 处理维度表
8.1 管理各类键
8.1.1 管理业务键
8.1.2 生成代理键
8.2 加载难度表
8.2.1 雪花维度表
8.2.2 星型维度表
8.3 缓慢变动维度
8.3.1 缓慢变动维类型
8.3.2 类型1的缓慢变动维
8.3.3 类型2的缓慢变动维
8.3.4 其余类型的缓慢变动维
8.4 更多维度
8.4.1 生成维(Generated Dimensions)
8.4.2 杂项维度(Junk Dimensions)
8.4.3 递归层次
8.5 小结
9 加载事实表
9.1 批量加载
9.1.1 STDIN和FIFO
9.1.2 Kettle批量加载
9.1.3 批量加载通常要考虑的问题
9.2 维度查询
9.2.1 维护参照完整性
9.2.2 代理键管道
9.2.3 迟到数据
9.3 处理事实表
9.3.1 周期快照和累积快照
9.3.2 面向状态的事实表
9.3.3 加载周期快照表
9.3.4 加载累积快照表
9.3.5 加载面向状态事实表
9.3.6 加载汇集表
9.4 小结
10 处理OLAP数据
10.1 OLAP的价值和挑战
10.1.1 OLAP存储类型
10.1.2 OLAP在系统中的位置
10.1.3 Kettle OLAP选项
10.2 Mondrian
10.3 XML/A服务器
10.4 Palo
10.4.1 创建Palo链接
10.4.2 Palo架构
10.4.3 读Palo数据
10.4.4 写Palo数据
10.5 小结
11 ETL开发生命期
11.1 解决方案设计
11.1.1 好习惯和坏习惯
11.1.2 ETL流设计
11.1.3 可重用性和可维护性
11.2 敏捷开发
11.3 测试和调试
11.3.1 测试活动
11.3.2 ETL测试
11.3.3 调试
11.4 解决方案文档化
11.4.1 为何实际状况下文档不多
11.4.2 Kettle的文档功能
11.4.3 生成文档
11.5 小结
12 调度和监控
12.1 调度
12.1.1 操做系统调度
12.1.2 使用Pentaho内置的调度程序
12.2 监控
12.2.1 日志
12.2.2 邮件通知
12.3 小结
13 版本和移植
13.1 版本控制系统
13.1.1 基于文件的版本控制系统
13.1.2 内容管理系统
13.2 Kettle元数据
13.2.1 Kettle XML元数据
13.2.2 Kettle资源库元数据
13.3 管理资源库
13.3.1 导出和导入元数据
13.3.2 资源库升级
13.4 版本移植系统
13.4.1 管理XML文件
13.4.2 管理资源库
13.4.3 解决方案参数化
13.5 小结
14 血统和审计
14.1 批量血统抽取
14.2 血统
14.2.1 血统信息
14.2.2 影响分析信息
14.3 日志和操做元数据
14.3.1 日志基础
14.3.2 日志架构
14.3.3 日志表
14.4 小结
15 性能调优
15.1 转换性能:找到最弱的链接
15.1.1 经过简化找到性能瓶颈
15.1.2 经过度量值找到性能瓶颈
15.1.3 复制数据行
15.2 提升性能转换
15.2.1 提升读文本文件的性能
15.2.2 写文本文件时使用延迟转换
15.2.3 提升数据库性能
15.2.4 数据排序
15.2.5 减小CPU消耗
15.3 提升做业性能
15.3.1 做业里的循环
15.3.2 数据库链接池
15.4 小结
16 并行、集群和分区
16.1 多线程
16.1.1 数据行分发
16.1.2 记录行合并
16.1.3 记录行再分发
16.1.4 数据流水线
16.1.5 多线程的问题
16.1.6 做业中的并行执行
16.2 使用Carte子服务器
16.2.1 配置文件
16.2.2 定义子服务器
16.2.3 远程执行
16.2.4 监视子服务器
16.2.5 Carte安全
16.2.6 服务
16.3 集群转换
16.3.1 定义一个集群模式
16.3.2 设计集群转换
16.3.3 执行和监控
16.3.4 元数据转换
16.4 分区
16.4.1 定义分区模式
16.4.2 分区的目标
16.4.3 实现分区
16.4.4 内部变量
16.4.5 数据库分区
16.4.6 集群转换中的分区
16.5 小结
17 云计算中的动态集群
17.1 动态集群
17.1.1 创建动态集群
17.1.2 使用动态集群
17.2 云计算
17.3 EC2
17.3.1 如何使用EC2
17.3.2 成本
17.3.3 自定义AMI
17.3.4 打包新AMI
17.3.5 停止AMI
17.3.6 运行主节点
17.3.7 运行子节点
17.3.8 使用EC2集群
17.3.9 监控
17.3.10 轻量原则和持久性
17.4 小结
18 实时数据的集合
18.1 实时ETL介绍
18.1.1 实时处理面临的挑战
18.1.2 需求
18.2 基于流的转换
18.2.1 一个基于流的转换实例
18.2.2 调试
18.2.3 第三方软件和实时整合
18.2.4 Java消息服务
18.3 小结
19 Data Vault管理
19.1 Data Vault模型介绍
19.2 你是否须要Data Vault
19.3 Data Vault组成部分
19.3.1 中心表
19.3.2 连接表
19.3.3 附属表
19.3.4 Data Vault特色
19.3.5 构建Data Vault模型
19.4 将Sakila的例子转换成Data Vault模型
19.4.1 Sakila 中心表
19.4.2 Sakila 连接表
19.4.3 Sakila 附属表
19.5 加载Data Vault模型:简单的ETL解决方案
19.5.1 安装Sakila Data Vault
19.5.2 安装ETL方案
19.5.3 建立一个数据库帐户
19.5.4 ETL解决方案的例子
19.5.5 加载Data Vault表
19.6 从Data Vault模型更新到数据集市
19.6.1 ETL解决方案例子
19.6.2 dim_actor转换
19.6.3 dim_customer转换
19.6.4 dim_film转换
19.6.5 dim_film_actor_birdge转换
19.6.6 fact_rental转换
19.6.7 加载星型模型里的所的表
19.7 小结
20 处理复杂数据格式
20.1 非关系型和非表格型的数据格式
20.2 非结构化的表格型数据
20.2.1 多处理值字段
20.2.2 处理重复的字段组
20.3 半结构化的和非结构化的数据
20.4 键/值对
20.5 小结
21 Web Service
21.1 Web页面和Web Service
21.2 数据格式
21.2.1 XML
21.2.2 HTML
21.2.3 JavaScript Object Notation
21.3 XML例子
21.3.1 XML例子
21.3.2 从XML中抽取数据
21.3.3 生成XML文档
21.4 SOAP例子
21.4.1 使用”Web服务查询”步骤
21.4.2 直接访问SOAP服务
21.5 JSON例子
21.5.1 Freebase项目
21.5.2 使用Kettle抽取Freebase数据
21.6 RSS
21.6.1 RSS结构
21.6.2 kettle对RSS的支持
21.7 小结
22 Kettle集成
22.1 Kettle API
22.1.1 LGPL协议
22.1.2 Kettle Java API
22.2 执行存在的转换和做业
22.2.1 执行一个转换
22.2.2 执行一个做业
22.3 应用程序中嵌入Kettle
22.3.1 Pentaho报表
22.3.2 把数据放到转换里
22.3.3 动态转换
22.3.4 动态模版
22.3.5 动态做业
22.3.6 在Kettle里执行动态ETL
22.3.7 Result
22.3.8 替换元数据
22.4 OEM版本和二次发布版本
22.4.1 建立PDI的OEM版本
22.4.2 Kettle的二次布(Forking)
22.5 小结
23 扩展Kettle
23.1 插件架构
23.1.1 插件类型
23.1.2 架构
23.1.3 前提
23.2 转换步骤架构
23.2.1 StempMetaInterface
23.2.2 StepDataInterface
23.2.3 StepDialoginterface
23.2.4 StepInterface
23.3 用户自定义Java类步骤
23.3.1 传递元数据
23.3.2 访问输入和字段
23.3.3 代码片断
23.3.4 例子
23.4 做业项插件
23.4.1 JobEntryInterface
23.4.2 JobEntryDialogInterface
23.5 分区插件
23.6 资源库插件
23.7 数据类型插件
23.8 小结
附录A Kettle生态群
附录B Kettle企业版特性
附录C 内置的变量和属性参考