1. 程式人生 > >Pentaho Kettle解決方案:使用PDI構建開源ETL解決方案pdf

Pentaho Kettle解決方案:使用PDI構建開源ETL解決方案pdf

第一部分:開始
第1章 ETL入門............................................ 2
1.1 OLTP和資料倉庫對比 ..................................... 2
1.2 ETL是什麼 ........................................................ 3
1.2.1 ETL解決方案的演化過程 ................... 4
1.2.2 ETL基本構成 ....................................... 5
1.3 ETL、ELT和EII ................................................ 6
1.3.1 ELT ....................................................... 6
1.3.2 EII:虛擬資料整合 ............................. 7
1.4 資料整合面臨的挑戰 ....................................... 8
1.4.1 方法論:敏捷BI .................................. 9
1.4.2 ETL設計 ............................................. 10
1.4.3 獲取資料 ............................................ 10
1.4.4 資料質量 ............................................ 12
1.5 ETL工具的功能 .............................................. 13
1.5.1 連線 .................................................... 13
1.5.2 平臺獨立 ............................................ 14
1.5.3 資料規模 ............................................ 14
1.5.4 設計靈活性 ........................................ 14
1.5.5 複用性 ................................................ 15
1.5.6 擴充套件性 ................................................ 15
1.5.7 資料轉換 ............................................ 15
1.5.8 測試和除錯 ........................................ 16
1.5.9 血統和影響分析 ................................ 16
1.5.10 日誌和審計 ...................................... 16
1.6 小結 .................................................... 17
第2章 Kettle基本概念................................ 18
2.1 設計原則 ......................................................... 18
2.2 Kettle設計模組 ............................................... 19
2.2.1 轉換 .................................................... 19
2.2.2 作業 .................................................... 23
2.2.3 轉換或作業的元資料 ........................ 28
2.2.4 資料庫連線 ........................................ 28
2.2.5 工具 .................................................... 31
2.2.6 資源庫 ................................................ 31
2.2.7 虛擬檔案系統 .................................... 31
2.3 引數和變數 ..................................................... 32
2.3.1 定義變數 ............................................ 32
2.3.2 命名引數 ............................................ 33
2.3.3 使用變數 ............................................ 33
2.4 視覺化程式設計 ..................................................... 34
2.4.1 開始 .................................................... 34
2.4.2 建立新的步驟 .................................... 35
2.4.3 放在一起 ............................................ 36
2.5 小結 ...................................................... 38
第3章 安裝和配置..................................... 39
3.1 Kettle軟體概覽 ............................................... 39
3.1.1 整合開發環境:Spoon ...................... 40
3.1.2 命令列啟動:Kitchen和Pan ............. 42
3.1.3 作業伺服器:Carte ........................... 42
3.1.4 Encr.bat和encr.sh ................................ 42
3.2 安裝 ................................................ 43
3.2.1 Java環境 ............................................. 43
3.2.2 安裝 Kettle ......................................... 43
3.3 配置 ................................................. 46
3.3.1 配置檔案和.kettle目錄 ...................... 46
3.3.2 用於啟動Kettle程式的shell指令碼 ....... 51
3.3.3 管理 JDBC 驅動 ................................ 52
3.4 小結 .................................. 53
第4章 ETL示例解決方案——Sakila........... 54
4.1 Sakila ........................................ 54
4.1.1 sakila示例資料庫 ............................... 55
4.1.2 租賃業務的星型模型 ........................ 57
4.2 預備知識和一些基礎的Spoon技巧 ............... 60
4.2.1 安裝ETL解決方案 ............................. 60
4.2.2 Spoon使用 .......................................... 60
4.3 ETL示例解決方案 .......................................... 61
4.3.1 生成靜態維度 .................................... 62
4.3.2 迴圈載入 ............................................ 64
4.4 小結 .......................................... 80
第二部分:ETL
第5章 ETL子系統...................................... 82
5.1 34種子系統介紹 ............................................. 82
5.1.1 抽取 .................................................... 83
5.1.2 清洗和更正資料 ................................ 84
5.1.3 資料釋出 ............................................ 86
5.1.4 管理ETL環境 ..................................... 89
5.2 小結 ...................................................... 91
第6章 資料抽取......................................... 92
6.1 Kettle資料抽取概覽 ....................................... 92
6.1.1 檔案抽取 ............................................ 93
6.1.2 資料庫抽取 ........................................ 97
6.1.3 Web資料抽取 ..................................... 98
6.1.4 基於流的和實時的抽取 .................... 99
6.2 處理ERP和CRM系統 ................................... 100
6.2.1 ERP 挑戰 .......................................... 100
6.2.2 Kettle ERP外掛 ................................ 101
6.2.3 處理SAP資料 ................................... 101
6.2.4 ERP和CDC 問題 .............................. 104
6.3 資料剖析 ....................................................... 105
6.4 CDC:變更資料捕獲 ................................... 110
6.4.1 基於源資料的CDC ...........................111
6.4.2 基於觸發器的CDC .......................... 113
6.4.3 基於快照的CDC .............................. 113
6.4.4 基於日誌的CDC .............................. 116
6.4.5 哪個CDC方案更適合你 .................. 117
6.5 釋出資料 ....................................................... 117
6.6 小結 ................................................. 118
第7章 清洗和校驗................................... 119
7.1 資料清洗 ....................................................... 120
7.1.1 資料清洗步驟 .................................. 121
7.1.2 使用參照表 ...................................... 123
7.1.3 資料校驗 .......................................... 127
7.2 錯誤處理 ....................................................... 130
7.2.1 處理過程錯誤 .................................. 131
7.2.2 轉換錯誤 .......................................... 132
7.2.3 處理資料(校驗)錯誤 .................. 133
7.3 審計資料和過程質量 ................................... 136
7.4 資料排重 ....................................................... 137
7.4.1 去除完全重複的資料 ...................... 137
7.4.2 不完全重複問題 .............................. 138
7.4.3 設計排除重複記錄的轉換 .............. 139
7.5 指令碼 ............................................... 142
7.5.1 公式 .................................................. 143
7.5.2 Java指令碼 ........................................... 143
7.5.3 使用者自定義Java表示式 ................... 144
7.5.4 正則表示式 ...................................... 145
7.6 小結 ................................................... 146
第8章 處理維度表................................... 147
8.1 管理各種鍵 ................................................... 148
8.1.1 管理業務鍵 ...................................... 148
8.1.2 生成代理鍵 ...................................... 149
8.2 載入維度表 ................................................... 154
8.2.1 雪花維度表 ...................................... 154
8.2.2 星型維度表 ...................................... 159
8.3 緩慢變更維度 ............................................... 161
8.3.1 緩慢變更維型別 .............................. 161
8.3.2 型別1的緩慢變更維 ........................ 161
8.3.3 型別2的緩慢變更維 ........................ 163
8.3.4 其他型別的緩慢變更維 .................. 167
8.4 更多維度 ....................................................... 168
8.4.1 生成維(Generated Dimensions) .. 168
8.4.2 雜項維度(Junk Dimensions) ...... 169
8.4.3 遞迴層次 .......................................... 170
8.5 小結 ............................................. 171
第9章 載入事實表................................... 172
9.1 批量載入 ....................................................... 173
9.1.1 STDIN和FIFO .................................. 173
9.1.2 Kettle批量載入 ................................ 174
9.1.3 批量載入一般要考慮的問題 .......... 176
9.2 維度查詢 ....................................................... 176
9.2.1 維護參照完整性 .............................. 176
9.2.2 代理鍵管道 ...................................... 177
9.2.3 遲到資料 .......................................... 179
9.3 處理事實表 ................................................... 182
9.3.1 週期快照和累積快照 ...................... 182
9.3.2 面向狀態的事實表 .......................... 183
9.3.3 載入週期快照表 .............................. 185
9.3.4 載入累積快照表 .............................. 185
9.3.5 載入面向狀態事實表 ...................... 186
9.3.6 載入聚集表 ...................................... 186
9.4 小結 ............................................. 187
第10章 處理OLAP資料........................... 188
10.1 OLAP的價值和挑戰................................... 189
10.1.1 OLAP 儲存型別 ............................. 190
10.1.2 OLAP在系統中的位置 .................. 191
10.1.3 Kettle OLAP選項 ........................... 191
10.2 Mondrian ..................................................... 192
10.3 XML/A服務 ................................................ 194
10.4 Palo ................................................... 197
10.4.1 建立Palo 連線 ................................ 198
10.4.2 Palo 架構 ........................................ 199
10.4.3 讀Palo資料 ..................................... 200
10.4.4 寫Palo資料 ..................................... 202
10.5 小結 ............................................... 204
第三部分:管理和部署
第11章 ETL開發生命期........................... 206
11.1 解決方案設計 ............................................. 206
11.1.1 好習慣和壞習慣 ............................ 206
11.1.2 ETL流設計 ..................................... 209
11.1.3 可重用性和可維護性 .................... 209
11.2 敏捷開發 ..................................................... 210
11.3 測試和除錯 ................................................. 214
11.3.1 測試活動 ........................................ 214
11.3.2 ETL測試 ......................................... 215
11.3.3 除錯 ................................................ 218
11.4 解決方案文件化 ......................................... 220
11.4.1 為什麼實際情況下文件很少 ........ 220
11.4.2 Kettle的文件功能........................... 221
11.4.3 生成文件 ........................................ 222
11.5 小結 .................................................... 223
第12章 排程和監控................................. 224
12.1 排程 ............................................... 224
12.1.1 作業系統級排程 ............................ 225
12.1.2 使用Pentaho 內建的排程程式 ...... 228
12.2 監控 ............................................... 232
12.2.1 日誌 ................................................ 232
12.2.2 郵件通知 ........................................ 234
12.3 小結 ................................................ 237
第13章 版本和移植................................. 238
13.1 版本控制系統 ............................................. 238
13.1.1 基於檔案的版本控制系統 ............ 239
13.1.2 內容管理系統 ................................ 240
13.2 Kettle 元資料 .............................................. 240
13.2.1 Kettle XML 元資料 ........................ 241
13.2.2 Kettle 資源庫元資料 ..................... 242
13.3 管理資源庫 ................................................. 244
13.3.1 匯出和匯入資源庫 ........................ 244
13.3.2 資源庫升級 .................................... 245
13.4 版本移植系統 ............................................. 245
13.4.1 管理XML檔案 ............................... 245
13.4.2 管理資源庫 .................................... 246
13.4.3 解決方案引數化 ............................ 246
13.5 小結 .............................................. 248
第14章 血統和審計................................. 249
14.1 批量血統抽取 ............................................. 250
14.2 血統 .................................................. 251
14.2.1 血統資訊 ........................................ 251
14.2.2 影響分析資訊 ................................ 252
14.3 日誌和操作元資料 ..................................... 254
14.3.1 日誌基礎 ........................................ 254
14.3.2 日誌架構 ........................................ 255
14.3.3 日誌表 ............................................ 257
14.4 小結 .................................................. 262
第四部分:效能和擴充套件性
第15章 效能調優..................................... 264
15.1 轉換效能:找到最弱連線 ......................... 264
15.1.1 通過簡化找到效能瓶頸 ................ 265
15.1.2 通過度量值找到效能瓶頸 ............ 266
15.1.3 複製資料行 .................................... 267
15.2 提高轉換效能 ............................................. 269
15.2.1 提高讀文字檔案的效能 ................ 269
15.2.2 寫文字檔案時使用延遲轉換 ........ 271
15.2.3 提高資料庫效能 ............................ 272
15.2.4 資料排序 ........................................ 275
15.2.5 減少CPU消耗 ................................ 276
15.3 提高作業效能 ............................................. 280
15.3.1 作業裡的迴圈 ................................ 280
15.3.2 資料庫連線池 ................................ 281
15.4 小結 .............................................. 281
第16章 並行、叢集和分割槽....................... 283
16.1 多執行緒 ......................................................... 283
16.1.1 資料行分發 .................................... 284
16.1.2 記錄行合併 .................................... 285
16.1.3 記錄行再分發 ................................ 285
16.1.4 資料流水線 .................................... 286
16.1.5 多執行緒的問題 ................................ 287
16.1.6 作業中的並行執行 ........................ 289
16.2 使用Carte子伺服器 .................................... 289
16.2.1 配置檔案 ........................................ 289
16.2.2 定義子伺服器 ................................ 290
16.2.3 遠端執行 ........................................ 291
16.2.4 監視子伺服器 ................................ 291
16.2.5 Carte安全 ....................................... 291
16.2.6 服務 ................................................ 292
16.3 叢集轉換 ..................................................... 293
16.3.1 定義一個叢集模式 ........................ 293
16.3.2 設計叢集轉換 ................................ 294
16.3.3 執行和監控 .................................... 295
16.3.4 元資料轉換 .................................... 296
16.4 分割槽 ............................................... 298
16.4.1 定義分割槽模式 ................................ 299
16.4.2 分割槽的目標 .................................... 300
16.4.3 實現分割槽 ........................................ 300
16.4.4 內部變數 ........................................ 301
16.4.5 資料庫分割槽 .................................... 301
16.4.6 叢集轉換中的分割槽 ........................ 302
16.5 小結 ................................................. 302
第17章 雲端計算中的動態叢集................... 303
17.1 動態叢集 ..................................................... 303
17.1.1 建立動態叢集 ................................ 304
17.1.2 使用動態叢集 ................................ 306
17.2 雲端計算 ......................................................... 306
17.3 EC2 .............................................................. 307
17.3.1 如何使用EC2 ................................. 307
17.3.2 成本 ................................................ 307
17.3.3 自定義AMI .................................... 307
17.3.4 打包新AMI .................................... 310
17.3.5 中止AMI ........................................ 310
17.3.6 執行主節點 .................................... 310
17.3.7 執行子節點 .................................... 311
17.3.8 使用EC2 叢集 ................................ 312
17.3.9 監控 ................................................ 313
17.3.10 輕量原則和永續性 ...................... 314
17.4 小結 ............................................. 314
第18章 實時資料整合.............................. 315
18.1 實時ETL介紹 .............................................. 315
18.1.1 實時處理面臨的挑戰 .................... 316
18.1.2 需求 ................................................ 316
18.2 基於流的轉換 ............................................. 317
18.2.1 一個基於流的轉換例項 ................ 318
18.2.2 除錯 ................................................ 321
18.2.3 第三方軟體和實時整合 ................ 321
18.2.4 Java 訊息服務 ................................ 322
18.3 小結 .............................................. 324
第五部分:高階主題
第19章 Data Vault管理............................ 326
19.1 Data Vault 模型介紹 ................................... 327
19.2 你是否需要Data Vault ................................ 327
19.3 Data Vault的組成部分 ................................ 328
19.3.1 中心表 ............................................ 328
19.3.2 連結表 ............................................ 329
19.3.3 附屬表 ............................................ 329
19.3.4 Data Vault 特點 .............................. 331
19.3.5 構建 Data Vault 模型 ..................... 331
19.4 將Sakila的例子轉換成Data Vault 模型 ..... 331
19.4.1 Sakila中心表 .................................. 331
19.4.2 Sakila 連結表 ................................. 332
19.4.3 Sakila 附屬表 ................................. 333
19.5 載入Data Vault 模型:簡單的ETL解決方案 ..................... 334
19.5.1 安裝Sakila Data Vault .................... 335
19.5.2 安裝ETL方案 ................................. 335
19.5.3 建立一個數據庫賬戶 .................... 335
19.5.4 ETL解決方案的例子 ..................... 335
19.5.5 載入 Data Vault 表 ......................... 341
19.6 從Data Vault 模型更新資料集市 ............... 341
19.6.1 ETL解決方案例子 ......................... 342
19.6.2 dim_actor 轉換 ............................... 342
19.6.3 dim_customer 轉換 ........................ 343
19.6.4 dim_film 轉換 ................................ 346
19.6.5 dim_film_actor_bridge 轉換 .......... 347
19.6.6 fact_rental 轉換 .............................. 347
19.6.7 載入星型模型裡的所有表 ............ 349
19.7 小結 .......................................... 349
第20章 處理複雜資料格式....................... 350
20.1 非關係型和非表格型的資料格式 ............. 350
20.2 非結構化的表格型資料 ............................. 351
20.2.1 處理多值欄位 ................................ 351
20.2.2 處理重複的欄位組 ........................ 352
20.3 半結構化和非結構化資料 ......................... 353
20.4 鍵/值對 ........................................................ 358
20.5 小結 ............................................. 362
第21章 Web Services............................. 363
21.1 Web 頁面和Web Services ........................... 363
21.2 資料格式 ..................................................... 365
21.2.1 XML ............................................... 365
21.2.2 HTML ............................................. 366
21.2.3 JavaScript Object Notation ............. 367
21.3 XML例子 .................................................... 369
21.3.1 XML例子檔案 ............................... 369
21.3.2 從XML中抽取資料 ....................... 371
21.3.3 生成XML文件 ............................... 378
21.4 SOAP例子 ................................................... 384
21.4.1 使用“Web服務查詢”步驟 ......... 385
21.4.2 直接訪問 SOAP服務 ..................... 386
21.5 JSON例子 ................................................... 389
21.5.1 Freebase專案 .................................. 389
21.5.2 使用Kettle 抽取Freebase資料 ....... 392
21.6 RSS .............................................................. 396
21.6.1 RSS結構 ......................................... 396
21.6.2 Kettle對RSS的支援 ....................... 398
21.7 小結 ............................................ 403
第22章 Kettle整合................................... 404
22.1 Kettle API .................................................... 404
22.1.1 LGPL協議 ...................................... 404
22.1.2 Kettle Java API ............................... 405
22.2 執行存在的轉換和作業 ............................. 406
22.2.1 執行一個轉換 ................................ 406
22.2.2 執行一個作業 ................................ 407
22.3 應用程式中嵌入Kettle ............................... 408
22.3.1 Pentaho 報表 .................................. 408
22.3.2 把資料放到轉換裡 ........................ 410
22.3.3 動態轉換 ........................................ 413
22.3.4 動態模板 ........................................ 416
22.3.5 動態作業 ........................................ 416
22.3.6 在Kettle裡執行動態ETL ............... 419
22.3.7 Result .............................................. 419
22.3.8 替換元資料 .................................... 420
22.4 OEM版本和二次釋出版本 ........................ 421
22.4.1 建立PDI的OEM版本 ..................... 421
22.4.2 Kettle的二次釋出(Forking) ...... 422
22.5 小結 .............................................. 423
第23章 擴充套件Kettle................................... 424
23.1 外掛架構 ..................................................... 424
23.1.1 外掛型別 ........................................ 425
23.1.2 架構 ................................................ 425
23.1.3 前提 ................................................ 425
23.2 轉換步驟外掛 ............................................. 428
23.2.1 StepMetaInterface ........................... 428
23.2.2 StepDataInterface ........................... 434
23.2.3 StepDialogInterface ........................ 434
23.2.4 StepInterface ................................... 440
23.3 使用者自定義 Java 類步驟 ............................ 444
23.3.1 傳遞元資料 .................................... 444
23.3.2 訪問輸入和欄位 ............................ 445
23.3.3 程式碼片段 ........................................ 445
23.3.4 例子 ................................................ 445
23.4 作業項外掛 ................................................. 446
23.4.1 JobEntryInterface ........................... 446
23.4.2 JobEntryDialogInterface ................. 448
23.5 分割槽外掛 ..................................................... 448
23.6 資源庫外掛 ................................................. 450
23.7 資料庫型別外掛 ......................................... 450
23.8 小結 ............................................ 451
附錄A Kettle生態群................................. 452
附錄B Kettle 企業版特性.......................... 456
附錄C 內建的變數和屬性參考................. 457