本書從 Excel 處理大型數(shù)據(jù)的缺點開始講起,逐步講解了 Excel 和 Power BI 中的 Power Query 組件,并重點介紹了Power Query 的底層 M 語言的應用知識。
本書分為 10 章,主要講解了 Power Query 的入門知識和數(shù)據(jù)集成、Power Query 的 M 語法規(guī)則系列知識,針對 Power Query 如何實現(xiàn)數(shù)據(jù)清洗和重構系列知識做了詳細的講解,還重點介紹了目前 Power Query 的各類內(nèi)置函數(shù)的功能,最后介紹了如何利用自定義函數(shù)實現(xiàn)復雜的數(shù)據(jù)處理和重構過程。
本書內(nèi)容通俗易懂,案例豐富,實用性強,特別適合入門級數(shù)據(jù)分析人員學習,也適合進階閱讀,相信通過閱讀本書,讀者對數(shù)據(jù)分析過程中的清洗和重構會有一個新的認識。
徐鵬
----------------------------
徐鵬,微軟最有價值專家MVP、微軟公共論壇版主、51CTO特級講師,原微軟中國有限公司工程師,曾為中廣核、華為、比亞迪、南航、臺積電等中大型企業(yè)提供培訓及顧問咨詢服務。先后就職于宏碁(中國)有限公司、微軟(中國)有限公司。為全球500強企業(yè)提供各類業(yè)務的優(yōu)化服務及顧問咨詢服務,精通數(shù)據(jù)分析方法論及Windows系統(tǒng)的自動化運維。
第1章 走入Power Query的世界
1.1Excel處理數(shù)據(jù)的缺點2
1.2Excel的Power數(shù)據(jù)處理組件3
1.3Power Query組件5
1.3.1Excel的Power Query組件8
1.3.2Power BI的Power Query數(shù)據(jù)導入界面10
1.4Power Query編輯器11
1.4.1Excel的Power Query編輯器
界面12
1.4.2Power BI的Power Query編輯器
界面14
1.4.3Excel在Power Query數(shù)據(jù)處理中的優(yōu)勢17
1.4.4Power BI在Power Query數(shù)據(jù)處理上的優(yōu)勢18
1.5Power Query的底層語言——M語言21
1.6本章總結24
第2章 Power Query的數(shù)據(jù)集成
2.1Power Query的CSV/TXT 數(shù)據(jù)集成26
2.1.1Excel 導入CSV數(shù)據(jù)26
2.1.2Power BI導入CSV數(shù)據(jù)30
2.2Power Query的Excel數(shù)據(jù)集成32
2.2.1Excel中的Excel數(shù)據(jù)導入與
集成32
2.2.2Power BI中的Excel數(shù)據(jù)導入與
集成34
2.3Excel 導入當前表格中的數(shù)據(jù)35
2.4XML格式數(shù)據(jù)集成37
2.4.1Excel 實現(xiàn)XML 數(shù)據(jù)的集成37
2.4.2Power BI 導入XML格式數(shù)據(jù)40
2.5JSON格式數(shù)據(jù)集成42
2.5.1Excel實現(xiàn)JSON數(shù)據(jù)集成43
2.5.2Power BI實現(xiàn)JSON數(shù)據(jù)集成45
2.6文本格式數(shù)據(jù)集成46
2.6.1Excel以文本格式導入數(shù)據(jù)47
2.6.2Power BI以文本格式導入數(shù)據(jù)48
2.7Power Query的SQL Server數(shù)據(jù)集成50
2.7.1Excel獲取SQL Server全部
數(shù)據(jù)53
2.7.2Excel獲取T-SQL 篩選后的
數(shù)據(jù)54
2.7.3Power BI以導入方式獲取SQL
數(shù)據(jù)56
2.7.4Power BI采用Direct Query獲取SQL數(shù)據(jù)58
2.8Power Query導入Web數(shù)據(jù)61
2.8.1Excel 實現(xiàn)Web的數(shù)據(jù)獲取62
2.8.2Power BI實現(xiàn)Web的數(shù)據(jù)獲取65
2.9Power Query 導入Web API數(shù)據(jù)70
2.9.1Excel 實現(xiàn)Web API數(shù)據(jù)獲取71
2.9.2Power BI實現(xiàn)Web API數(shù)據(jù)獲取72
2.10Power Query導入MySQL數(shù)據(jù)74
2.10.1Excel 實現(xiàn)MySQL 數(shù)據(jù)獲取75
2.10.2Power BI 實現(xiàn)MySQL數(shù)據(jù)
獲取77
2.11Power Query導入文件夾數(shù)據(jù)79
2.11.1Excel提取文件夾所有文件
數(shù)據(jù)79
2.11.2Power BI提取文件夾的所有
數(shù)據(jù)81
2.12Power BI中的數(shù)據(jù)流服務84
2.12.1Power BI Pro構建數(shù)據(jù)流服務84
2.12.2Power BI Desktop引用數(shù)據(jù)流
服務87
2.13數(shù)據(jù)源訪問的權限管理88
2.14本章總結90
第3章 Power Query和M語言
3.1什么是M語言92
3.2M語言支持的基本數(shù)據(jù)類型96
3.3M語言支持的組合數(shù)據(jù)類型99
3.4Power Query的M語言結構101
3.5Power Query中M語言的智能提示105
3.6Power Query的M語言變量107
3.7Power Query的M語言參數(shù)109
3.8Power Query的M語言流程處理114
3.9Power Query的M語言的錯誤處理116
3.10Power Query的M語言嵌套119
3.11Power Query的M語言操作符120
3.12M語言的注釋130
3.13本章總結131
第4章 Power Query實現(xiàn)數(shù)據(jù)的清洗和重構
4.1數(shù)據(jù)清洗遵從的原則133
4.2數(shù)據(jù)清洗后的操作134
4.3數(shù)據(jù)清洗和重構具體操作134
4.4Power Query實現(xiàn)數(shù)據(jù)類型的轉換135
4.4.1Excel中數(shù)據(jù)類型轉換135
4.4.2Power BI數(shù)據(jù)類型轉換137
4.5Power Query實現(xiàn)列的刪除138
4.6Power Query 實現(xiàn)行的刪除139
4.7Power Query保留行操作146
4.8Power Query的數(shù)據(jù)篩選150
4.9Power Query添加數(shù)據(jù)列156
4.10Power Query按列分列164
4.11Power Query按列分行172
4.12Power Query的數(shù)據(jù)轉置175
4.13Power Query數(shù)據(jù)替換176
4.14Power Query數(shù)據(jù)列交換179
4.15Power Query的數(shù)據(jù)排序179
4.16Power Query時間表的構建181
4.17本章總結186
第5章 Power Query實現(xiàn)數(shù)據(jù)合并操作
5.1Power Query數(shù)據(jù)多重合并操作188
5.2Power Query數(shù)據(jù)追加合并操作189
5.3Power Query數(shù)據(jù)橫向合并192
5.4數(shù)據(jù)合并連接關系說明195
5.5Power Query處理缺失值203
5.6Power Query實現(xiàn)數(shù)據(jù)的分組207
5.7Power Query實現(xiàn)數(shù)據(jù)的透視217
5.8Power Query實現(xiàn)數(shù)據(jù)的逆透視219
5.9本章總結220
第6章 Power Query查詢連接的分享與刷新
6.1Power Query數(shù)據(jù)連接的分享與重用222
6.2Excel中的Power Query連接與復制222
6.3Power Query連接的導出與導入226
6.4Power Query 的數(shù)據(jù)刷新229
6.4.1Excel的刷新功能230
6.4.2Power BI的刷新功能238
6.5本章總結247
第7章 Power Query的函數(shù)
7.1Power Query函數(shù)的獲取與使用249
7.2Power Query文件系列訪問函數(shù)259
7.2.1CSV文件解析260
7.2.2Excel 文件內(nèi)表解析261
7.2.3引用第三方Excel數(shù)據(jù)263
7.2.4XML文件解析263
7.2.5JSON文件解析264
7.3數(shù)據(jù)庫訪問函數(shù)265
7.3.1Access 數(shù)據(jù)庫訪問265
7.3.2SQL Server 數(shù)據(jù)庫訪問266
7.3.3MySQL數(shù)據(jù)庫訪問266
7.4Web訪問函數(shù)267
7.4.1Web.Contents函數(shù)267
7.4.2Web.Page 函數(shù)267
7.4.3Web.BrowserContents 函數(shù)268
7.4.4Html.Table 函數(shù)268
7.5Power Query文本處理函數(shù)269
7.5.1Text.Length計算字符串長度269
7.5.2Text.Insert插入字符串270
7.5.3Text.From 將其他數(shù)據(jù)類型轉換為
文本類型270
7.5.4Text.Format 設置文本輸出格式271
7.5.5Text.Tolist 將文本轉換為列表271
7.5.6Text.Start截取字符串中前面的
字符272
7.5.7Text.Select刪除不需要的字
符串272
7.5.8Text.Middle 截取中間部分字符273
7.5.9Text.End截取從設定位置到結尾的字符273
7.5.10Text.Range 獲取字符串范圍
數(shù)據(jù)274
7.5.11Text.Replace 替換特定數(shù)據(jù)274
7.5.12Text.ReplaceRange替換區(qū)域
數(shù)據(jù)274
7.5.13Text.Repeat重復文本275
7.5.14Text.Combine合并文本275
7.5.15Text.Trim刪除前后特定字符276
7.5.16Text.Padstart 占位符填充277
7.5.17Text.Split字符串分隔278
7.5.18Text.BeforeDelimiter獲取分隔符前的數(shù)據(jù)278
7.5.19Text.AfterDelimiter獲取分隔符后的數(shù)據(jù)279
7.5.20Text.BetweenDelimiters獲取分隔符中間值280
7.6Power Query列表處理函數(shù)280
7.6.1List.Accumulate列表累加器
計算281
7.6.2List.Range獲取列表區(qū)域281
7.6.3List.Average計算列表平均數(shù)282
7.6.4List.Sum對列表求和282
7.6.5List.Combine合并列表283
7.6.6List.Count統(tǒng)計列表元素283
7.6.7List.Dates 創(chuàng)建日期列表284
7.6.8List.LastN獲取列表最后N個
元素284
7.6.9List.MaxN 獲取最大數(shù)據(jù)285
7.6.10List.Numbers 生成數(shù)值列表286
7.6.11List.Product列表元素乘積287
7.6.12List.Random生成隨機數(shù)列表287
7.6.13List.RemoveFirstN刪除列表前面N個數(shù)值288
7.6.14List.RemoveItems 刪除列表項288
7.6.15List.RemoveRange刪除列表區(qū)間
數(shù)值289
7.6.16List.Repeat重復列表數(shù)據(jù)290
7.6.17List.ReplaceRange 替換列表
區(qū)間290
7.6.18List.Select篩選列表291
7.6.19List.Skip實現(xiàn)列表行跳躍291
7.6.20List.Sort列表排序292
7.6.21List.Split列表分割292
7.6.22List.Union對列表非重復數(shù)據(jù)進行合并293
7.6.23List.Generate生成列表293
7.6.24List.Zip 列表提取與組合294
7.7Power Query記錄處理函數(shù)295
7.7.1Record.AddField 添加記錄字段
功能295
7.7.2Record.Combine 記錄連接295
7.7.3Record.FromList將列表轉換
記錄296
7.7.4Record.RemoveFields刪除字段296
7.7.5Record.SelectFields 選擇記錄297
7.7.6Record.Tolist將記錄轉換為
列表297
7.8Power Query表處理函數(shù)298
7.8.1Table.AddColumn在表中添加并計算列298
7.8.2Table.AddIndexColumn為表添加索引列299
7.8.3Table.AddJoinColumn添加嵌
套表299
7.8.4Table.AlternateRows行跳躍300
7.8.5Table.Combine合并數(shù)據(jù)表301
7.8.6Table.DemoteHeaders實現(xiàn)表標題
降級301
7.8.7Table.Distinct獲取表唯一值302
7.8.8Table.ExpandListColumn擴展
列表303
7.8.9Table.ExpandRecordColumn 擴展記錄列304
7.8.10Table.ExpandTableColumn擴展表數(shù)據(jù)304
7.8.11Table.FindText 查找內(nèi)容305
7.8.12Table.FirstN 獲取前面的表
數(shù)據(jù)305
7.8.13Table.Group對表數(shù)據(jù)聚合307
7.8.14Table.Join進行表連接307
7.8.15Table.LastN獲取表最后幾行
數(shù)據(jù)308
7.8.16Table.MaxN求表中最大的N個
數(shù)據(jù)309
7.8.17Table.MinN求表中最小的N個
數(shù)據(jù)310
7.8.18Table.PromoteHeaders將第一行提升為標題行311
7.8.19Table.Range選擇區(qū)域行312
7.8.20Table.RemoveColumns 刪除列313
7.8.21Table.RemoveFirstN刪除表前面
的行313
7.8.22Table.RemoveLastN刪除表后面
的行314
7.8.23Table.Repeat實現(xiàn)表行重復315
7.8.24Table.ReplaceRows 替換數(shù)
據(jù)行316
7.8.25Table.ReplaceValue替換數(shù)
據(jù)值317
7.8.26Table.SelectRows 篩選數(shù)據(jù)318
7.8.27Table.Skip實現(xiàn)表的行跳躍318
7.8.28Table.Sort對表排序319
7.8.29Table.Transpose互換行列320
7.9Power Query URL處理函數(shù)321
7.9.1Uri.BuildQueryString構建URL訪問地址參數(shù)321
7.9.2Uri.Combine合并URL訪問
地址321
7.10Power Query數(shù)據(jù)合并函數(shù)322
7.10.1Combiner.CombineTextByDelimiter 以分隔符方式合并字符322
7.10.2Combiner.CombineTextByEachDe-limiter按順序分隔符合并文本323
7.11Power Query數(shù)據(jù)分割函數(shù)324
7.11.1Splitter.SplitTextByDelimiter按分隔符拆分數(shù)據(jù)324
7.11.2Splitter.SplitTextByEachDelimiter按分隔符列表拆分數(shù)據(jù)324
7.11.3Splitter.SplitTextByLengths按照長度拆分數(shù)據(jù)325
7.11.4Splitter.SplitTextByRepeatedLength按字符長度重復拆分325
7.11.5SplitTextByPositions按位置
拆分326
7.12Power Query日期時間函數(shù)327
7.12.1Date.Day獲取日期部分327
7.12.2Date.DayOfWeek求取日期位于一周中的第幾天327
7.12.3Date.DayOfYear求取日期位于一年中的第幾天328
7.12.4Date.DaysInMonth求取日期所在月份的天數(shù)328
7.12.5Date.FromText將文本生成
日期328
7.12.6Date.AddDays日期的加減329
7.12.7Date.AddMonths月度加減
運算329
7.12.8Date.AddYears年度加減運算330
7.12.9Date.ToText將日期轉換為
文本330
7.12.10Date.ToRecord將日期轉換為
記錄331
7.12.11DateTime.LocalNow獲取當前
時間331
7.13本章總結331
第8章 Power Query的自定義函數(shù)
8.1從零開始構建自定義函數(shù)334
8.1.1無參數(shù)自定義函數(shù)構建335
8.1.2有參數(shù)自定義函數(shù)構建336
8.2基于數(shù)據(jù)結果建立函數(shù)337
8.3執(zhí)行并獲取自定義函數(shù)結果340
8.4自定義函數(shù)提取文件夾內(nèi)所有請假
數(shù)據(jù)341
8.5自定義函數(shù)獲取基金即時凈值348
8.6本章總結353
第9章 Power Query與Python
9.1Power Query調(diào)用Python的前置
條件355
9.2Python環(huán)境的安裝與部署355
9.3Power BI 啟用Python 支持358
9.3.1Power Query執(zhí)行Python驗證358
9.3.2Power Query結合Python生成中文詞云361
9.4本章總結365
第10章 Power Query數(shù)據(jù)綜合應用案例
10.1身份證信息的初步導入368
10.2身份證號碼數(shù)據(jù)初步清洗369
10.3身份證數(shù)據(jù)二次清洗373
10.4非中文姓名數(shù)據(jù)清洗375
10.5本章總結377
附錄Power Query 簡單案例處理378