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 內置的變量和屬性參考