| | | O'Reilly:Tableau Prep即學即用 | 該商品所屬分類:計算機/網絡 -> 程序設計 | 【市場價】 | 635-920元 | 【優惠價】 | 397-575元 | 【作者】 | 美卡爾·阿爾欽(Carl | 【所屬類別】 | 圖書 計算機/網絡 程序設計 其他 | 【出版社】 | 中國電力出版社 | 【ISBN】 | 9787519864439 | 【折扣說明】 | 一次購物滿999元台幣免運費+贈品 一次購物滿2000元台幣95折+免運費+贈品 一次購物滿3000元台幣92折+免運費+贈品 一次購物滿4000元台幣88折+免運費+贈品
| 【本期贈品】 | ①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
| |
版本 | 正版全新電子版PDF檔 | 您已选择: | 正版全新 | 溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。*. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。 *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。 *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。 | | | | 內容介紹 | |
![](http://img3m8.ddimg.cn/6/13/29456268-1_u_2.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787519864439 作者:[美]卡爾·阿爾欽(Carl 出版社:中國電力出版社 出版時間:2022年08月 
" 編輯推薦 在自助式數據準備產品中,Tableau Prep相對來說比較容易使用,隻要你知道如何清理和組織你的數據集。來自倫敦信息實驗室(The Information Lab)的Carl Allchin,通過一繫列的實用課程能讓你快速掌握如何使用Tableau Prep,包括數據準備、清理、自動化、組織和輸出數據集的方法。
這本實用技術指南基於Allchin的熱門博客Preppin’Data,它將帶你一步一步了解Tableau Prep的基本原理。自助式數據準備可減少完成數據項目所需的時間,並提高你的數據分析質量。本書將探究Tableau Prep是如何幫助我們訪問數據,並將其轉化為有價值的信息的過程。 內容簡介
- 了解準備數據時需要注意的事項。
- 了解處理數據字段時要使用哪些Tableau Prep函數。
- 分析數據集的形態和概貌。
- 對輸出數據進行分析,了解如何通過Tableau Prep實現工作流程自動化。
- 學習如何使用Tableau Prep函數來清理數據。
- 探索在實際場景中使用Tableau Prep相關技術的方法。
- 通過管理和記錄輸出,使他人可以使用你的數據。
作者簡介 Carl Allchin是Tableau大使,也是倫敦信息實驗室(The Information Lab)的“另一位主教練”。倫敦信息實驗室擁有全球領先的數據分析培訓課程。Carl在金融服務領域擔任商業智能分析師和管理人員的時間超過十年,他通過咨詢、博客教授市場領先的數據解決方案,為數百家公司提供支持服務。Carl是Preppin’Data的創始人之一。 目錄 目錄 前言 .1 第1 章 為何需要自助式數據準備 .9 1.1 自助式數據可視化簡史 9 1.2 獲取“正確的數據” . 10 1.3 自助式數據準備的機會 11 1.4 玩轉Tableau Prep 12 1.5 小結 13 部分 入門 第2 章 Tableau Prep Builder 入門 17 2.1 從哪裡獲得Tableau Prep Builder 17 2.2 如何獲取Prep Builder 的許可 18 2.3 Tableau Prep Builder 界面 19 2.4 數據準備的基本步驟 . 21目錄 前言 .1 第1 章 為何需要自助式數據準備 .9 1.1 自助式數據可視化簡史 9 1.2 獲取“正確的數據” . 10 1.3 自助式數據準備的機會 11 1.4 玩轉Tableau Prep 12 1.5 小結 13 部分 入門 第2 章 Tableau Prep Builder 入門 17 2.1 從哪裡獲得Tableau Prep Builder 17 2.2 如何獲取Prep Builder 的許可 18 2.3 Tableau Prep Builder 界面 19 2.4 數據準備的基本步驟 . 21 2.4.1 輸入步驟 22 2.4.2 清理步驟 23 2.4.3 輸出步驟 24 2.4.4 保存流程 24 2.5 小結 26 第3 章 數據準備規劃 .27 3.1 階段1:了解你的數據 . 28 3.2 階段2:明確目標狀態 . 29 3.3 階段3:確定數據從KYD 到預期狀態所需的轉換 31 3.4 階段4:構建工作流程 . 33 3.5 小結 35 第4 章 塑造數據 37 4.1 在輸入的數據集中尋找什麼 37 4.2 什麼數據形態適合在Tableau 中進行分析 . 38 4.3 改變Prep Builder 中的數據集結構 . 40 4.3.1 Pivot(轉換) 40 4.3.2 Aggregate(彙總) . 41 4.3.3 Join(連接) . 42 4.3.4 Union(聯合) . 43 4.4 將數據重組技術應用於冰淇淋味的香皂案例 44 4.4.1 步驟1:將列數據轉換為行數據 . 44 4.4.2 步驟2:將行數據轉換為列數據 . 45 4.5 小結 46 第5 章 連接文件中的數據 47 5.1 基於文件之上的文件 . 47 5.1.1 電子表格 48 5.1.2 其他文件類型 48 5.2 在哪裡可以找到你的數據文件 . 49 5.3 如何在Prep 中連接到文件 . 50 5.4 使用文件輸入保存流程的注意事項 52 5.5 小結 52 第6 章 連接到數據庫 .53 6.1 什麼是數據庫 53 6.2 如何在Prep Builder 中連接到數據庫 55 6.3 何時應避免連接到數據庫 58 6.4 小結 58 第二部分 數據類型 第7 章 處理數字 61 7.1 我們的數字意味著什麼 62 7.2 數字的類型 . 62 7.3 用作類別還是度量 62 7.4 彙總 63 7.5 數字的格式化 63 7.6 控制數值數據的函數 . 64 7.7 小結 66 第8 章 處理日期問題 .67 8.1 為什麼日期很重要? . 67 8.2 日期的各個部分 67 8.3 日期查詢表 . 68 8.4日期 . 69 8.5 Excel 序號 70 8.6 輸入日期 71 8.6.1 makedate() 函數 71 8.6.2 dateparse() 函數 71 8.7 小結 73 第9 章 處理字符串數據 74 9.1 字符串意味著什麼 74 9.2 字符串數據有何不同 . 75 9.2.1 字符順序 75 9.2.2 字符串格式化注意事項 76 9.3 常用於字符串數據準備的函數 . 78 9.4 使用字符串數據的分組和替換選項 79 9.5 小結 80 第10 章 處理布爾數據 81 10.1 什麼是布爾數據 . 81 10.1.1 為什麼它在數據分析中如此有用 . 81 10.1.2 具有布爾邏輯的函數 83 10.2 小結 . 90 第三部分 數據的形態 第11 章 數據概要分析 93 11.1 什麼是數據概況 . 93 11.2 為什麼可視化數據集很重要 94 11.2.1 安斯庫姆四要素 . 94 11.2.2 可視化與數據表 . 95 11.3 Prep Builder 如何配置文件數據 96 11.3.1 生成直方圖和迷你直方圖 . 97 11.3.2 選擇概要或詳細視圖 99 11.3.3 突出顯示數值 100 11.3.4 查看維度計數 101 11.4 排序 102 11.5 小結 102 第12 章 數據集采樣 103 12.1 一個簡單的規則:如果可能,全部使用 103 12.2 繞過技術限制的數據采樣 103 12.2.1 數據規模 . 104 12.2.2 數據速度 . 104 12.3 需要采樣的其他理由 105 12.3.1 縮短建設時間 105 12.3.2 確定你需要什麼 . 105 12.4 采樣技術 . 106 12.4.1 固定行數 . 106 12.4.2 隨機采樣 . 107 12.5 何時不要采樣 108 12.6 小結 109 第13 章 將列轉為行 110 13.1 何時在Tableau Prep Builder 中進行數據轉換 . 110 13.2 如何將列轉為行 112 13.3 小結 116 第14 章 將行轉為列 117 14.1 何時使用行到列的數據轉換 . 117 14.2 如何將行轉為列 118 14.3 小結 121 第15 章 Prep Builder 中的彙總功能 . 122 15.1 比較Prep Builder 和Desktop 中的計算方法 122 15.2 Prep Builder 中的哪些計算方式不同 123 15.3 添加彙總的步驟 127 15.4 剩下的數據在哪裡 . 131 15.5 詳細程度計算選項 . 133 15.6 小結 133 第16 章 將數據集連接到一起 134 16.1 如何在Prep Builder 中連接數據集 134 16.2 加入邏輯與術語 137 16.3 Prep Builder 中的連接類型 139 16.4 何時使用每種連接類型 144 16.5 小結 145 第17 章 聯合數據 . 146 17.1 什麼是union(聯合) . 146 17.2 如果數據結構不一樣怎麼辦 . 148 17.3 何時聯合數據 149 17.3.1 月度數據集 150 17.3.2 來自網絡資源的數據集 150 17.3.3 公司合並 . 152 17.4 多表和通配符聯合 . 152 17.5 小結 154 第18 章 計算 . 155 18.1 計算在數據準備中的作用是什麼 155 18.2 創建一個計算字段 . 156 18.3 計算的基礎知識 158 18.3.1 參考列表 . 158 18.3.2 語法 159 18.3.3 描述 160 18.3.4 示例 160 18.4 建立計算 . 160 18.4.1 當計算順利進行時 . 160 18.4.2 當計算出現問題時 . 161 18.4.3 編輯計算字段 163 18.4.4 建議 163 18.5 計算的類型 164 18.5.1 數值計算 . 164 18.5.2 字符串計算 165 18.5.3 日期計算 . 165 18.5.4 帶有布爾輸出的條件計算 165 18.5.5 邏輯運算 . 165 18.5.6 類型轉換 . 165 18.6 詳細程度和排名計算 166 18.7 小結 167 第四部分 輸出 第19 章 選擇輸出 . 171 19.1 輸出類型 . 171 19.1.1 發布到文件 172 19.1.2 發布到Tableau 服務器 173 19.2 何時在Prep Builder 中輸出數據 173 19.2.1 在輸出步驟中輸出數據 173 19.2.2 在Tableau Desktop 上預覽輸出數據 176 19.3 輸出數據時的其他考慮 178 19.4 小結 179 第20 章 輸出到數據庫 180 20.1 何時向數據庫寫入數據 180 20.1.1 清理數據 . 180 20.1.2 簡化的數據連接 . 181 20.1.3 階段表和參考表 . 181 20.2 寫入數據庫的設置 . 181 20.3 需要注意的問題 185 20.4 小結 186 第21 章 Tableau Prep Conductor 入門 187 21.1 何時使用Tableau Prep Conductor 187 21.2 如何獲得Prep Conductor 188 21.3 加載一個流程到Prep Conductor 188 21.4 使用Prep Conductor 的其他好處 195 21.5 小結 196 第五部分 清理數據 第22 章 創建附加數據 199 22.1 何時不要去創建數據 199 22.1.1 Tableau Desktop 中的動態計算 199 22.1.2 數據連接中的重復記錄 201 22.2 創建附加的列 201 22.2.1 使用計算 . 201 22.2.2 將行轉為列 202 22.2.3 連接數據集 203 22.3 創建附加行 204 22.3.1 將列轉為行 204 22.3.2 數據集聯合 204 22.3.3 數據集支撐 205 22.3.4 連接數據集 205 22.4 小結 205 第23 章 過濾 . 206 23.1 什麼是過濾器 207 23.2 不同類型的過濾器 . 207 23.2.1 選擇過濾 . 207 23.2.2 計算過濾 . 210 23.2.3 通配符過濾 211 23.2.4 空值過濾 . 213 23.3 何時過濾掉列 213 23.4 何時過濾掉行 213 23.5 小結 214 第24 章 在輸入過程中刪除數據 . 215 24.1 在加載數據集之前對其進行更改 215 24.2 性能慢、生成慢、輸出慢 216 24.3 刪除數據列 218 24.4 刪除記錄 . 221 24.5 小結 223 第25 章 拆分數據字段 224 25.1 基本分割 . 225 25.2 高級拆分:當自動拆分不能如期進行的時候 227 25.3 什麼時候不要拆分數據 229 25.3.1 地址數據 . 229 25.3.2 沒有明確的定界符 . 230 25.4 小結 230 第26 章 基於分組的數據清理 231 26.1 什麼是分組 231 26.2 為什麼使用分組 232 26.2.1 提高準確率 232 26.2.2 數據層次結構導向 . 232 26.2.3 平滑機構重組 233 26.3 分組技術 . 234 26.3.1 手動分組 . 234 26.3.2 計算 236 26.3.3 內置函數 . 238 26.4 小結 241 第27 章 空值處理 . 242 27.1 什麼是空值 242 27.2 什麼時候可以接受空值 243 27.3 如何刪除或替換空值 245 27.3.1 ISNULL() 函數 245 27.3.2 ZN() 函數 246 27.3.3 合並操作 . 247 27.4 小結 249 第28 章 使用數據角色 250 28.1 如何使用數據角色 . 251 28.2 自定義數據角色 253 28.3 小結 257 第29 章 處理多餘字符 258 29.1 什麼是多餘的字符 . 258 29.2 多餘字符引起的問題 259 29.3 去除多餘字符 261 29.3.1 含有錯別字的字符串 262 29.3.2 帶有多餘字符的數字 263 29.3 3 有錯別字的日期 . 264 29.4 小結 265 第30 章 去除重復數據 266 30.1 如何識別重復的數據 266 30.2 重復的原因 267 30.2.1 繫統加載 . 267 30.2.2 每項度量的行 268 30.2.3 連接 269 30.3 如何處理重復數據 . 270 30.3.1 彙總:技巧1 270 30.3.2 彙總:技巧2 272 30.3.3 將行轉換成列 274 30.4 小結 275 第31 章 使用正則表達式 276 31.1 什麼是正則表達式 . 276 31.2 如何在Tableau Prep 中使用正則表達式 . 276 31.3 REGEXP_EXTRACT() 和REGEXP_EXTRACT_NTH() 277 31.3.1 REGEXP_MATCH() 函數 277 31.3.2 REGEXP_REPLACE() 函數 . 278 31.4 Regex(正則表達式)應用案例 . 278 31.4.1 替換常見錯誤 278 31.4.2 匿名評論或反饋 . 279 31.5 常用的正則表達式命令 280 31.6 小結 281 第32 章 實現高級連接 282 32.1 多連接條件 282 32.2 非等價連接條件 285 32.2.1 用連接來過濾數據 . 286 32.2.2 區間連接 . 287 32.3 OR 語句 289 32.4 小結 291 第33 章 創建LOD 計算 . 292 33.1 什麼是追加 292 33.2 通過LOD 計算來研究追加 292 33.2.1 何時使用LOD 計算 293 33.2.2 如何在Prep Builder 中編寫LOD 計算方法 . 294 33.2.3 LOD 計算在做什麼 298 33.3 小結 300 第34 章 分析計算 . 301 34.1 什麼是表計算 301 34.2 在Prep Builder 中應用表計算邏輯 304 34.2.1 關鍵詞 . 305 34.2.2 分析計算 . 305 34.3 應用案例 . 309 34.3.1 篩選前N 條記錄 . 309 34.3.2 過濾掉一定比例的數據 310 34.4 小結 312 第六部分 基礎知識拓展 第35 章 挑戰復雜的數據準備場景 . 315 35.1 挑戰 315 35.2 從哪裡開始 316 35.3 邏輯步驟 . 318 35.4 做出改變 . 321 35.5 做好迭代準備 322 35.6 小結 324 第36 章 處理自由文本 325 36.1 什麼是自由文本 325 36.2 為什麼自由文本有用 325 36.3 如何在Tableau 中分析自由文本 326 36.3.1 拆分字符串 327 36.3.2 將列轉為行 328 36.3.3 清理大小寫和標點符號 330 36.3.4 使用連接來刪除常見詞 330 36.3.5 將剩餘的值進行分組 332 36.4 小結 333 第37 章 使用更智能的過濾 335 37.1 計算 335 37.1.1 布爾計算 . 335 37.1.2 邏輯計算 . 336 37.1.3 正則計算 . 337 37.2 區間連接 . 339 37.3 百分比異常 339 37.3.1 手動輸入:LOD 計算 339 37.3.2 重新加載的數據:連接到以前的輸出 . 342 37.3.3 彙總各類型的平均生產成本 . 343 37.3.4 將數據集連接到一起 343 37.4 組合技術運用 344 37.5 小結 345 第38 章 處理兌換率 346 38.1 兌換率問題 346 38.2 在Tableau Prep 中應用兌換率 . 347 38.2.1 第1 步:為轉換創建一致的數據粒度 . 347 38.2.2 第2 步:將數據集連接在一起 348 38.2.3 第3 步:應用兌換率 349 38.3 兌換率的長期策略 . 349 38.3.1 頻率管理 . 349 38.3.2 維護歷史表 350 38.4 小結 350 第39 章 支撐你的數據 351 39.1 什麼是支撐 351 39.2 數據支撐所解決的問題 354 39.3 數據支撐帶來的挑戰 354 39.4 傳統的數據支撐技術 355 39.4.1 第1 步:輸入數據集 356 39.4.2 第2 步:建立連接計算 356 39.4.3 第3 步:將兩個數據集連接在一起 357 39.4.4 第4 步:過濾掉不需要的行 . 359 39.5 新數據支撐技術 360 39.5.1 第1 步:輸入數據集 361 39.5.2 第2 步:連接數據集 361 39.5.3 第3 步:添加報告日期 362 39.5.4 第4 步:移除支撐值 363 39.6 結果 363 39.7 小結 364 第40 章 連接編程腳本 365 40.1 何時使用Prep 中的腳本步驟 365 40.2 在Prep 中設置計算機以使用腳本 . 366 40.3 使用腳本步驟 370 40.4 小結 372 第41 章 處理Prep Builder 錯誤 . 373 41.1 參數錯誤 . 373 41.2 空白的概況窗格或數據窗格 . 374 41.2.1 更改計算或刪除下遊的數據字段 374 41.2.2 數據源已發生改變 . 375 41.3 計算字段內的錯誤 . 376 41.3.1 不完整的計算 376 41.3.2 不支持的函數 378 41.4 小結 378 第七部分 管理你的數據 第42 章 數據準備的文檔記錄 381 42.1 基本的文檔 381 42.1.1 文件夾結構 381 42.1.2 文件名 . 382 42.1.3 數據源 . 382 42.1.4 輸出 383 42.2 步驟名稱 . 383 42.3 清理步驟 . 383 42.4 步驟描述 . 384 42.5 顏色 385 42.6 連接 385 42.7 聯合 386 42.8 小結 387 第43 章 決定在何處準備數據 388 43.1 需要考慮的過程 388 43.2 數據準備vs 可視化分析 . 389 43.2.1 數據素養 . 389 43.2.2 組織規模 . 389 43.2.3 技術硬件的質量 . 390 43.2.4 數據投資的歷史狀況 390 43.3 軟件性能 . 390 43.3.1 采樣 390 43.3.2 功能性 . 391 43.3.3 文檔 392 43.4 小結 393 第44 章 管理數據 . 394 44.1 什麼是敏感數據 394 44.1.1 公開 394 44.1.2 秘密 395 44.1.3 機密 395 44.1.4 受限 395 44.2 基於敏感度管理數據 395 44.3 生產環境與開發環境 396 44.4 刪除數據 . 397 44.4.1 當數據變得過時或不相關時 . 397 44.4.2 當客戶或顧客離開時 397 44.5 小結 398 第45 章 存儲數據 . 399 45.1 不可訪問 . 399 45.1.1 不要犯法 . 400 45.1.2 不要刪除業務數據 . 400 45.1.3 將數據的訪問權授予專家 401 45.1.4 記錄你的資料來源 . 401 45.2 緩慢/ 無響應的性能 . 401 45.3 覆蓋寫入風險 401 45.3.1 授予隻讀訪問權 . 402 45.3.2 發布前的培訓 402 45.4 輸出要寫到哪裡 403 45.5 小結 403 第46 章 在數據中使用標識符和鍵 . 404 46.1 什麼是標識符 404 46.2 什麼是數據庫中的Key(鍵) 405 46.3 在Tableau Prep 中使用鍵和標識符 406 46.4 在Prep Builder 中創建標識符數據字段 . 408 46.5 小結 411 第47 章 保持數據更新 412 47.1 刷新數據 . 412 47.2 完全刷新vs 增量刷新 413 47.3 設置不同類型的刷新 413 47.3.1 Full Refresh(完全刷新) . 413 47.3.2 Incremental Refresh(增量刷新) . 414 47.4 刷新數據源時的注意事項 417 47.4.1 更改數據值 417 47.4.2 改變數據源的結構 . 417 47.4.3 新數據,新輸入 . 418 47.5 小結 418 第48 章 使用歷史表 419 48.1 為什麼需要歷史表 . 419 48.2 創建歷史表時需要考慮的問題 420 48.2.1 連接到實時數據的能力 420 48.2.2 信息的相關性 421 48.2.3 更新頻率 . 421 48.2.4 粒度級別 . 421 48.3 性能 421 48.4 數據法規 . 422 48.5 歷史表示例 422 48.6 小結 426 第49 章 評估是否完全需要Prep Builder 427 49.1 Tableau 數據準備歷史 . 427 49.2 何時先試試Tableau Desktop 428 49.2.1 簡單數據連接 428 49.2.2 數據聯合 . 429 49.2.3 單個轉換 . 431 49.3 何時使用Prep Builder . 432 49.4 小結 433 第50 章 後的思考 434 前言 前言數據無處不在,但對於大多數人來說,基於以下這些原因,導致數據基本上無法使用:? 有些數據被儲存在數據庫裡,並隱藏在編程語言的背後,而大多數人都沒學過這類語言。? 有些數據暗藏在個人計算機上,遠離了那些可能發現它有用的人。? 有些數據存儲時所用的格式,隻有創建它的繫統開發者纔能讀懂。那麼,你為什麼要關心這些呢?坦率地說,這些數據裡蘊含著答案,能解答你所提出的問題,甚至包括你尚未提出的問題。自助式數據準備是一種技能,它將讓我們重新認識所分析的那些數據,減少完成數據分析項目所需的時間,並從根本上提高數據分析質量。本書旨在掌握如何使用市場上直觀的工具之一——Tableau Prep Builder 來訪問這些數據,並將其轉化為有價值的信息,以回答上述問題。Tableau Prep Builder於2018 年4 月發布,用於支持Tableau Desktop、Tableau Server 和Tableau Online的用戶,它使你能夠將凌亂的數據變成可以在Tableau 軟件中進行分析的格式。Tableau Desktop、Tableau Server 和Tableau Online 是讓數據變得易於探究和可視化分析的軟件平臺。在此之前,從源繫統到提供有洞察力的數據分析的過程中,Tableau 的主要難點在於需要將數據處理成易於使用的格式。Tableau 和大多數BI(Business Intelligence,商業智能)工具一樣,要求數據是“干淨的”,並被編排成行和列。許多分析人員習慣於自己承擔這項手工工作,因此需要將這項任務自動化,將寶貴的時間花在實際的數據分析過程中。Tableau Prep Builder 允許用戶輕松地清理、處理和輸出所準備好的待分析的數據集。不僅如此,Tableau 還在軟件中嵌入了許多可視化的分析方法,因此用戶往往可以在Prep Builder 中找到問題的答案,而根本不需要導出數據。我為什麼要寫這本書如果Tableau Prep 中的一切都如此直觀,為什麼需要通過這本書來學習如何使用它呢?簡單地說,使用該工具隻是完成數據準備任務的一部分。其他部分還包括:? 了解為什麼要準備數據。? 連接到你需要的所有數據。? 了解不同的數據類型對所要執行的數據清理操作的影響。? 分解數據準備任務的過程以適應整體規劃。? 確保在數據清理和處理過程中可進行適當的調整。? 合並多個數據集。? 決定如何以及在哪裡輸出數據結果。與所有的軟件一樣,學習如何使用每個功能都需要一定時間,因此本書充滿了較復雜的技術性截圖和操作過程。這裡分享的很多知識將幫助你在任何數據準備工具中完成自己的數據準備項目。這些技術將使你有能力處理以前無法接觸到的數據集。這就是我寫這本書的原因:讓你有能力利用現有數據或者更多的數據來改善你的決策。在我的職業生涯中,我一直同時處於數據準備周期的兩端:作為數據接收者和輸出數據的提供者。作為數據接收者,我常常對獲得所需信息要花費那麼多時間而感到沮喪。我收到的信息往往不是我所需要的形式,或者缺少關鍵的數據,而這些數據是在我初提出數據要求後纔需要的。作為數據提供者,我總是要先去仔細地了解問題,做到能理解某人想要數據的根本原因,這樣我就可以提供好的解決方案,而不僅僅是他們表面上所要求的東西。我還意識到,我在每個數據請求上花費的時間越長,其他等待獲得自己對不同數據集看法的人的隊伍就越長。這就是為什麼我開始教用戶如何自己獲取數據的原因。顯然,不可能每個人都花時間去掌握SQL 查詢技能(如果你不知道這是什麼也沒關繫),以便訪問他們甚至還不明白為什麼需要的數據表。Tableau Prep Builder 讓你隻需要經過幾個小時的訓練就可以完成自己的數據準備工作,而不是需要幾天或幾周的時間去學習SQL。本書的目標讀者本書的目標讀者,是從事數據相關工作的各個領域的人群,比如:? 剛接觸數據行業和剛入職場的新人。數據是現在大多數工作的重要組成部分,所以如果你剛從學校或大學畢業,學習本書所要涉及的技能,能讓你為未來做好準備。? 剛接觸數據行業,同時是經驗豐富的專業人士。用從本書中獲得的知識來補充你的經驗,可以創造出一些驚人的效果。如果沒有這些經驗,數據對你來說可能毫無意義,因為缺乏背景知識。本書將為你提供完善數據處理的技巧,以擴充專業經驗。? 有可視化分析的經驗,但沒有數據準備經驗的人。Tableau Desktop 讓很多人有能力進行自己的可視化分析,而不是等待IT 部門和報表團隊為他們建立報表。Tableau Prep Builder 在數據準備方面的作用也正在於此。本書將提升你的可視化分析技能,從而能夠訪問以前似乎不可能的數據集。? 經驗豐富的數據準備從業者。好吧,這不是你的正式工作頭銜,但在我眼裡你就是這樣的人。你可能會使用Excel、SQL 或其他腳本語言。得益於自動化特性和簡化操作,相比當前的方法和工具,Tableau Prep Builder 將使你能夠更快捷地工作。? 有經驗的數據準備從業者的同事。熟悉Tableau Prep Builder 將使你能夠承擔有經驗的數據準備從業者手頭相對簡單、可重復的任務,這樣他們就可以集中精力應對更難的挑戰。他們將成為你的職場導師,告訴你如何發展,這樣你就可以在幫助他們的同時提高自己。本書是如何組織的本書共有七個部分。它們的編排是為了逐步培養你所需要的技能和知識,並且在你需要回顧內容時, 它以便捷的方式提供了參考知識點。第1 章深入地探討了為什麼自助式數據準備很重要,在此之後,各章的安排如下:部分(第2 ~ 6 章)在介紹了Prep Builder 之後,這部分探討了如何規劃你的數據準備工作,以及針對處理數據集的處理目標。這部分的後兩章探討了如何連接到數據文件和數據庫。第二部分(第7 ~ 10 章)了解你正在使用和準備的是什麼數據,這是關鍵所在。這些章節將幫助你知道在準備數據時要注意什麼,並介紹一些你可以用來處理數據字段的函數。第三部分(第11 ~ 18 章)一旦對你的數據字段有所了解,這部分將幫助你分析數據集的形態和概況。你還將掌握Prep Builder 中的轉換步驟。第四部分(第19 ~ 21 章)經過前面這些努力之後,是時候輸出數據進行分析了。這部分介紹了如何將你的數據從準備流程輸出到文件或數據庫中。該部分還介紹了Tableau Prep 的另一個產品——Prep Conductor,它可以讓你的工作流程自動化,以及與他人分享你的流程。第五部分(第22 ~ 34 章)到了這一步,意味著你已經掌握了如何制作簡單流程的基本知識。然而,數據準備工作往往包含其他挑戰。為了幫助你解決這些問題,該部分將向你介紹更多Prep Builder 中內置的數據清理功能。第六部分(第35 ~ 41 章)知道全部相關的技巧是一回事,但知道什麼時候使用這些技巧則是另一回事。因此,該部分介紹了如何在實際場景中使用你所學到的技術,以及當你面對更困難的場景時的注意事項。第七部分(第42 ~ 49 章)這部分的中心內容,是通過管理、記錄輸出,以及關注結果,將你的數據和流程提供給他人。這些章節會給你提供相關知識和基礎內容,為你自己的數據分析做好準備。但就像生活中的任何事情一樣,實踐會磨煉你的技能。為此,一些章節的特色是來自Preppin’ Data 的數據集、示例和挑戰,以便讓你練習本章所涉及的技術。Jonathan Allenby(喬納森? 艾倫比)和我將Preppin’ Data 設計為每周一次的挑戰,讓具有不同程度經驗的人練習他們的數據準備技能。這些練習屬於可選內容,但通過練習這些技術,你更有可能在下次需要時明白如何應用它。每個練習都解釋了它的意圖和要求,就像你認識的人提出的數據準備需求一樣。輸入和輸出數據集允許你嘗試滿足練習中設定的挑戰。解決辦法可以在博客上找到,但如果你已經提交了所要求的輸出,那麼就不存在正確或錯誤的解決辦法。後,Preppin’ Data 經常引用一家名為Chin Beard Suds Co. 的公司,這是一家模擬的肥皂零售商,Jonathan 和我在練習中使用它作為例子。這使得我們可以使用那些令人生畏的與肥皂有關的俏皮話,對此我們毫不諱言。Preppin’ Data 網站的點擊率已經超過80000 次,參與者超過260 人,提交的挑戰方案超過2000 個。我們希望你能加入這個數據準備者的社區。致謝如果沒有那些異常出眾的人,我稱他們為同行、同事和朋友,這本書是不可能完成的。首先要說的是,在我生活中無法將其帶入現代數據時代的一個Excel 用戶,同我搭檔15 年的Toni Feather。她的很多實用主義經驗都體現在這本書中,通過寫下這些內容,我可能終能讓她使用不同的數據準備工具。非常感謝倫敦The Information Lab 和The Data School 的朋友和同事們。如果沒有這些出色的頭腦和充滿激情的人,這本書就不會出現。四年的團隊咨詢經驗造就了很多用戶案例,你將在接下來的幾頁中讀到。Tom Brown(湯姆? 布朗)、Craig Bloodworth(克雷格? 布拉德沃思)和Robin Kennedy(羅賓? 肯尼迪),感謝你們創造了一個真正令人驚嘆的學習和發展環境。The Data School 的顧問們也值得特別稱贊,這些年來,在有幸教他們的過程中,讓我能夠完善所要表達的“信息”。他們通過每天提出的問題,極大地塑造了本書的內容。這本書開始於與Dan Farmer(丹? 法默,優秀的內容編輯之一)分享的一個想法,在他的幫助下形成了本書早期的框架,然後我將其具體化。謝謝你幫我塑造了這件事,Dan。當The Data School 的一位實習顧問Jonathan Allenby(喬納森? 艾倫比)問到,是否有什麼方法可以將我剛剛在Tableau Prep 上的教學內容付諸實踐時,我開始更加關注數據準備技術。這促使我們創建了Preppin’ Data 專題博客,而博客的成功和對數據準備領域的教學需求程度也促成了這本書的誕生。那些貢獻了實際內容的人應該得到極度的贊美,因為他們幫助我把普通的教學內容轉變成了這種印刷形式。O’Reilly 公司的Angela Rufino(安吉拉? 魯菲諾)是一位出色的內容編輯,她確保了本書的所有內容都有價值,即使對新的數據準備從業者來說也是如此。技術內容編輯Jonathan Drummey(喬納森? 朱梅)、Ryan Sleeper(瑞恩? 斯裡普)、Kimberly Bolch(肯柏林? 伯齊)和Luke Stoughton(盧克? 司托頓)都為本書增加了很多內容。他們的反饋不僅僅是其作為內容編輯的職責,還確保了本書能給每個閱讀者帶來價值。後,感謝你閱讀本書。通過在你個人和工作生活中加入更多數據驅動的決策,你將為自己和身邊的人改善這個世界。我有幸與很多部門合作,他們所從事的工作每天都在激勵著我。通過更好地利用信息和洞察力,我們可以讓這個世界變得更加美好──你現在就是努力幫助他人的人中的一分子。排版約定本書使用了下述排版約定。斜體(Italic)表示新術語、URL、示例電子郵件地址、文件名、擴展名、路徑名和目錄。等寬字體(Constant width)表示命令、選項、開關、變量、屬性、鍵、函數、類型、類、命名空間、方法、模塊、屬性、參數、值、對像、事件、事件句柄、XML 標簽、HTML 標簽、宏、文件的內容,或者命令的輸出。粗體等寬字體(Constant width bold)表示應該由用戶逐字輸入的命令或其他文本。斜體等寬字體(Constant width italic)表示應該替換成用戶提供的值。使用代碼示例補充材料(代碼示例、練習等)可在以此網站下載:https://oreil.ly/5k_uH。如果你在使用代碼示例時遇到技術問題或難題,請發送電子郵件至 bookquestions@oreilly.com。本書的目的是幫助你完成工作。一般來說,如果本書提供了示例代碼,你可以在你的程序和文檔中使用它。除非你要復制相當篇幅的代碼,否則不需要聯繫我們獲得許可。例如,編寫一個用到本書中幾塊代碼的程序不需要許可。銷售或分發O’Reilly書中的例子確實需要許可。通過引用本書和引用示例代碼來回答問題不需要許可。將本書中的大量示例代碼納入你的產品文檔則需要許可。我們一般不要求注明出處,但如果你這麼做,我們深表感謝。注明歸屬的內容通常包括標題、作者、出版商和ISBN。例如,“Tableau Prep: Up Running by CarlAllchin (O’Reilly). Copyright 2020 Carl Allchin,978-1-492-07962-0”。如果你覺得你對代碼示例的使用超出了合理使用或上述許可的範圍,請隨時聯繫我們:permissions@oreilly.com。O’Reilly 在線學習平臺(O’Reilly Online Learning)近40 年來,O’Reilly Media 致力於提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。我們擁有獨一無二的專家和革新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O’Reilly 的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O’Reilly 和200 多家其他出版商提供的大量文本和視頻資源。有關的更多信息,請訪問http://oreilly.com。聯繫我們請把對本書的評價和問題發給出版社。美國:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區西直門南大街2號成銘大廈C座807室(100035)奧萊利技術咨詢(北京)有限公司我們為這本書設置了一個網頁,在其上列出了勘誤表、示例和相關的其他信息。你可以通過地址http://oreilly.com/catalog/9781492079613 訪問該網頁。請發送電子郵件至 bookquestions@oreilly.com,對本書發表評論或提出技術問題。有關我們的書籍、課程的新聞和信息,請訪問http://www.oreilly.com。我們的Facebook:http://facebook.com/oreilly。我們的Twitter:http://twitter.com/oreillymedia。我們的YouTube 視頻:http://www.youtube.com/oreillymedia。前言數據無處不在,但對於大多數人來說,基於以下這些原因,導致數據基本上無法使用:? 有些數據被儲存在數據庫裡,並隱藏在編程語言的背後,而大多數人都沒學過這類語言。? 有些數據暗藏在個人計算機上,遠離了那些可能發現它有用的人。? 有些數據存儲時所用的格式,隻有創建它的繫統開發者纔能讀懂。那麼,你為什麼要關心這些呢?坦率地說,這些數據裡蘊含著答案,能解答你所提出的問題,甚至包括你尚未提出的問題。自助式數據準備是一種技能,它將讓我們重新認識所分析的那些數據,減少完成數據分析項目所需的時間,並從根本上提高數據分析質量。本書旨在掌握如何使用市場上直觀的工具之一——Tableau Prep Builder 來訪問這些數據,並將其轉化為有價值的信息,以回答上述問題。Tableau Prep Builder於2018 年4 月發布,用於支持Tableau Desktop、Tableau Server 和Tableau Online的用戶,它使你能夠將凌亂的數據變成可以在Tableau 軟件中進行分析的格式。Tableau Desktop、Tableau Server 和Tableau Online 是讓數據變得易於探究和可視化分析的軟件平臺。在此之前,從源繫統到提供有洞察力的數據分析的過程中,Tableau 的主要難點在於需要將數據處理成易於使用的格式。Tableau 和大多數BI(Business Intelligence,商業智能)工具一樣,要求數據是“干淨的”,並被編排成行和列。許多分析人員習慣於自己承擔這項手工工作,因此需要將這項任務自動化,將寶貴的時間花在實際的數據分析過程中。Tableau Prep Builder 允許用戶輕松地清理、處理和輸出所準備好的待分析的數據集。不僅如此,Tableau 還在軟件中嵌入了許多可視化的分析方法,因此用戶往往可以在Prep Builder 中找到問題的答案,而根本不需要導出數據。我為什麼要寫這本書如果Tableau Prep 中的一切都如此直觀,為什麼需要通過這本書來學習如何使用它呢?簡單地說,使用該工具隻是完成數據準備任務的一部分。其他部分還包括:? 了解為什麼要準備數據。? 連接到你需要的所有數據。? 了解不同的數據類型對所要執行的數據清理操作的影響。? 分解數據準備任務的過程以適應整體規劃。? 確保在數據清理和處理過程中可進行適當的調整。? 合並多個數據集。? 決定如何以及在哪裡輸出數據結果。與所有的軟件一樣,學習如何使用每個功能都需要一定時間,因此本書充滿了較復雜的技術性截圖和操作過程。這裡分享的很多知識將幫助你在任何數據準備工具中完成自己的數據準備項目。這些技術將使你有能力處理以前無法接觸到的數據集。這就是我寫這本書的原因:讓你有能力利用現有數據或者更多的數據來改善你的決策。在我的職業生涯中,我一直同時處於數據準備周期的兩端:作為數據接收者和輸出數據的提供者。作為數據接收者,我常常對獲得所需信息要花費那麼多時間而感到沮喪。我收到的信息往往不是我所需要的形式,或者缺少關鍵的數據,而這些數據是在我初提出數據要求後纔需要的。作為數據提供者,我總是要先去仔細地了解問題,做到能理解某人想要數據的根本原因,這樣我就可以提供好的解決方案,而不僅僅是他們表面上所要求的東西。我還意識到,我在每個數據請求上花費的時間越長,其他等待獲得自己對不同數據集看法的人的隊伍就越長。這就是為什麼我開始教用戶如何自己獲取數據的原因。顯然,不可能每個人都花時間去掌握SQL 查詢技能(如果你不知道這是什麼也沒關繫),以便訪問他們甚至還不明白為什麼需要的數據表。Tableau Prep Builder 讓你隻需要經過幾個小時的訓練就可以完成自己的數據準備工作,而不是需要幾天或幾周的時間去學習SQL。本書的目標讀者本書的目標讀者,是從事數據相關工作的各個領域的人群,比如:? 剛接觸數據行業和剛入職場的新人。數據是現在大多數工作的重要組成部分,所以如果你剛從學校或大學畢業,學習本書所要涉及的技能,能讓你為未來做好準備。? 剛接觸數據行業,同時是經驗豐富的專業人士。用從本書中獲得的知識來補充你的經驗,可以創造出一些驚人的效果。如果沒有這些經驗,數據對你來說可能毫無意義,因為缺乏背景知識。本書將為你提供完善數據處理的技巧,以擴充專業經驗。? 有可視化分析的經驗,但沒有數據準備經驗的人。Tableau Desktop 讓很多人有能力進行自己的可視化分析,而不是等待IT 部門和報表團隊為他們建立報表。Tableau Prep Builder 在數據準備方面的作用也正在於此。本書將提升你的可視化分析技能,從而能夠訪問以前似乎不可能的數據集。? 經驗豐富的數據準備從業者。好吧,這不是你的正式工作頭銜,但在我眼裡你就是這樣的人。你可能會使用Excel、SQL 或其他腳本語言。得益於自動化特性和簡化操作,相比當前的方法和工具,Tableau Prep Builder 將使你能夠更快捷地工作。? 有經驗的數據準備從業者的同事。熟悉Tableau Prep Builder 將使你能夠承擔有經驗的數據準備從業者手頭相對簡單、可重復的任務,這樣他們就可以集中精力應對更難的挑戰。他們將成為你的職場導師,告訴你如何發展,這樣你就可以在幫助他們的同時提高自己。本書是如何組織的本書共有七個部分。它們的編排是為了逐步培養你所需要的技能和知識,並且在你需要回顧內容時, 它以便捷的方式提供了參考知識點。第1 章深入地探討了為什麼自助式數據準備很重要,在此之後,各章的安排如下:部分(第2 ~ 6 章)在介紹了Prep Builder 之後,這部分探討了如何規劃你的數據準備工作,以及針對處理數據集的處理目標。這部分的後兩章探討了如何連接到數據文件和數據庫。第二部分(第7 ~ 10 章)了解你正在使用和準備的是什麼數據,這是關鍵所在。這些章節將幫助你知道在準備數據時要注意什麼,並介紹一些你可以用來處理數據字段的函數。第三部分(第11 ~ 18 章)一旦對你的數據字段有所了解,這部分將幫助你分析數據集的形態和概況。你還將掌握Prep Builder 中的轉換步驟。第四部分(第19 ~ 21 章)經過前面這些努力之後,是時候輸出數據進行分析了。這部分介紹了如何將你的數據從準備流程輸出到文件或數據庫中。該部分還介紹了Tableau Prep 的另一個產品——Prep Conductor,它可以讓你的工作流程自動化,以及與他人分享你的流程。第五部分(第22 ~ 34 章)到了這一步,意味著你已經掌握了如何制作簡單流程的基本知識。然而,數據準備工作往往包含其他挑戰。為了幫助你解決這些問題,該部分將向你介紹更多Prep Builder 中內置的數據清理功能。第六部分(第35 ~ 41 章)知道全部相關的技巧是一回事,但知道什麼時候使用這些技巧則是另一回事。因此,該部分介紹了如何在實際場景中使用你所學到的技術,以及當你面對更困難的場景時的注意事項。第七部分(第42 ~ 49 章)這部分的中心內容,是通過管理、記錄輸出,以及關注結果,將你的數據和流程提供給他人。這些章節會給你提供相關知識和基礎內容,為你自己的數據分析做好準備。但就像生活中的任何事情一樣,實踐會磨煉你的技能。為此,一些章節的特色是來自Preppin’ Data 的數據集、示例和挑戰,以便讓你練習本章所涉及的技術。Jonathan Allenby(喬納森? 艾倫比)和我將Preppin’ Data 設計為每周一次的挑戰,讓具有不同程度經驗的人練習他們的數據準備技能。這些練習屬於可選內容,但通過練習這些技術,你更有可能在下次需要時明白如何應用它。每個練習都解釋了它的意圖和要求,就像你認識的人提出的數據準備需求一樣。輸入和輸出數據集允許你嘗試滿足練習中設定的挑戰。解決辦法可以在博客上找到,但如果你已經提交了所要求的輸出,那麼就不存在正確或錯誤的解決辦法。後,Preppin’ Data 經常引用一家名為Chin & Beard Suds Co. 的公司,這是一家模擬的肥皂零售商,Jonathan 和我在練習中使用它作為例子。這使得我們可以使用那些令人生畏的與肥皂有關的俏皮話,對此我們毫不諱言。Preppin’ Data 網站的點擊率已經超過80000 次,參與者超過260 人,提交的挑戰方案超過2000 個。我們希望你能加入這個數據準備者的社區。致謝如果沒有那些異常出眾的人,我稱他們為同行、同事和朋友,這本書是不可能完成的。首先要說的是,在我生活中無法將其帶入現代數據時代的一個Excel 用戶,同我搭檔15 年的Toni Feather。她的很多實用主義經驗都體現在這本書中,通過寫下這些內容,我可能終能讓她使用不同的數據準備工具。非常感謝倫敦The Information Lab 和The Data School 的朋友和同事們。如果沒有這些出色的頭腦和充滿激情的人,這本書就不會出現。四年的團隊咨詢經驗造就了很多用戶案例,你將在接下來的幾頁中讀到。Tom Brown(湯姆? 布朗)、Craig Bloodworth(克雷格? 布拉德沃思)和Robin Kennedy(羅賓? 肯尼迪),感謝你們創造了一個真正令人驚嘆的學習和發展環境。The Data School 的顧問們也值得特別稱贊,這些年來,在有幸教他們的過程中,讓我能夠完善所要表達的“信息”。他們通過每天提出的問題,極大地塑造了本書的內容。這本書開始於與Dan Farmer(丹? 法默,優秀的內容編輯之一)分享的一個想法,在他的幫助下形成了本書早期的框架,然後我將其具體化。謝謝你幫我塑造了這件事,Dan。當The Data School 的一位實習顧問Jonathan Allenby(喬納森? 艾倫比)問到,是否有什麼方法可以將我剛剛在Tableau Prep 上的教學內容付諸實踐時,我開始更加關注數據準備技術。這促使我們創建了Preppin’ Data 專題博客,而博客的成功和對數據準備領域的教學需求程度也促成了這本書的誕生。那些貢獻了實際內容的人應該得到極度的贊美,因為他們幫助我把普通的教學內容轉變成了這種印刷形式。O’Reilly 公司的Angela Rufino(安吉拉? 魯菲諾)是一位出色的內容編輯,她確保了本書的所有內容都有價值,即使對新的數據準備從業者來說也是如此。技術內容編輯Jonathan Drummey(喬納森? 朱梅)、Ryan Sleeper(瑞恩? 斯裡普)、Kimberly Bolch(肯柏林? 伯齊)和Luke Stoughton(盧克? 司托頓)都為本書增加了很多內容。他們的反饋不僅僅是其作為內容編輯的職責,還確保了本書能給每個閱讀者帶來價值。後,感謝你閱讀本書。通過在你個人和工作生活中加入更多數據驅動的決策,你將為自己和身邊的人改善這個世界。我有幸與很多部門合作,他們所從事的工作每天都在激勵著我。通過更好地利用信息和洞察力,我們可以讓這個世界變得更加美好──你現在就是努力幫助他人的人中的一分子。排版約定本書使用了下述排版約定。斜體(Italic)表示新術語、URL、示例電子郵件地址、文件名、擴展名、路徑名和目錄。等寬字體(Constant width)表示命令、選項、開關、變量、屬性、鍵、函數、類型、類、命名空間、方法、模塊、屬性、參數、值、對像、事件、事件句柄、XML 標簽、HTML 標簽、宏、文件的內容,或者命令的輸出。粗體等寬字體(Constant width bold)表示應該由用戶逐字輸入的命令或其他文本。斜體等寬字體(Constant width italic)表示應該替換成用戶提供的值。使用代碼示例補充材料(代碼示例、練習等)可在以此網站下載:https://oreil.ly/5k_uH。如果你在使用代碼示例時遇到技術問題或難題,請發送電子郵件至 bookquestions@oreilly.com。本書的目的是幫助你完成工作。一般來說,如果本書提供了示例代碼,你可以在你的程序和文檔中使用它。除非你要復制相當篇幅的代碼,否則不需要聯繫我們獲得許可。例如,編寫一個用到本書中幾塊代碼的程序不需要許可。銷售或分發O’Reilly書中的例子確實需要許可。通過引用本書和引用示例代碼來回答問題不需要許可。將本書中的大量示例代碼納入你的產品文檔則需要許可。我們一般不要求注明出處,但如果你這麼做,我們深表感謝。注明歸屬的內容通常包括標題、作者、出版商和ISBN。例如,“Tableau Prep: Up & Running by CarlAllchin (O’Reilly). Copyright 2020 Carl Allchin,978-1-492-07962-0”。如果你覺得你對代碼示例的使用超出了合理使用或上述許可的範圍,請隨時聯繫我們:permissions@oreilly.com。O’Reilly 在線學習平臺(O’Reilly Online Learning)近40 年來,O’Reilly Media 致力於提供技術和商業培訓、知識和卓越見解,來幫助眾多公司取得成功。我們擁有獨一無二的專家和革新者組成的龐大網絡,他們通過圖書、文章、會議和我們的在線學習平臺分享他們的知識和經驗。O’Reilly 的在線學習平臺允許你按需訪問現場培訓課程、深入的學習路徑、交互式編程環境,以及O’Reilly 和200 多家其他出版商提供的大量文本和視頻資源。有關的更多信息,請訪問http://oreilly.com。聯繫我們請把對本書的評價和問題發給出版社。美國:O’Reilly Media, Inc.1005 Gravenstein Highway NorthSebastopol, CA 95472中國:北京市西城區西直門南大街2號成銘大廈C座807室(100035)奧萊利技術咨詢(北京)有限公司我們為這本書設置了一個網頁,在其上列出了勘誤表、示例和相關的其他信息。你可以通過地址http://oreilly.com/catalog/9781492079613 訪問該網頁。請發送電子郵件至 bookquestions@oreilly.com,對本書發表評論或提出技術問題。有關我們的書籍、課程的新聞和信息,請訪問http://www.oreilly.com。我們的Facebook:http://facebook.com/oreilly。我們的Twitter:http://twitter.com/oreillymedia。我們的YouTube 視頻:http://www.youtube.com/oreillymedia。 ![](http://img3m8.ddimg.cn/6/13/29456268-2_u_2.jpg) ![](http://img3m8.ddimg.cn/6/13/29456268-3_u_2.jpg) | | | | | |