与数据打交道,还在纠结于Excel、SQL、VBA、Python?数据处理领域经典之作PowerQuery"猴子书"让你用更聪明的方法处理数据。学完这本书,你就掌握了Power Query的一切,想要学Power Query,只需要这一本就够啦!
精通 Power Query
编辑推荐
适读人群 :
(1)需要处理数据的业务人员,如财务人员、HR;
(2)Excel用户、Power BI用户;
(3)Power Query新手;
(4)数据分析师等专业人员;
(5)经验丰富的ETL专家。
1. 广泛性:Power Query领域的经典之作“猴子书”,让你用更聪明的方法处理数据。
Excel用户可以仅仅通过学习Power Query配合Excel公式来完成导入数据、清理数据和转换数据,为后续分析数据做好准备,整个过程几乎零代码。
2. 平衡性:两位作者几乎完全互补,是 IT 和业务的完美组合。
本书并非简单粗暴的截图或单击流罗列,也不是枯燥的IT技术名词堆砌或公式排列。在本书中,可以大量感受到作者如何照顾业务伙伴的操作想法以及步步手把手的操作体验。同时,还有清晰、专业的 IT 解释辅助,这让从“小白”、业务用户到 IT 用户都能从中获益。这种平衡很难做到,而作者无疑做出了完美示范。业务伙伴读着不难,IT 用户读着“有干货”。
3. 系统性:给出了所需的抽象思维框架和系统化框架思考。
本书并非停留在介绍某种效果如何实现的简单表述,所谓“万变不离其宗”,在本书中,作者给出了高屋建瓴的系统化思考框架。例如,第2章就直接给出了查询的架构拆分设计思维,让人读之有种成为数据架构师的成就感,并迫不及待想将这些思路赶快“优化”到自己的工作中。
4. 实用性:给出了可以直接解决各种问题的解决方案模板。
本书并非简单功能大全或凸显神奇技巧,作者汇集了来自企业实战中的各种精华案例,例如日期表的构建(包括多种版本,如财务日期表),甚至目标的分摊。对照本书,所有内容都配有 Excel 或 Power BI 的实现案例,读者可以根据图书指引下载后直接使用。
本书作者肯.普尔斯(Ken Puls) 是加拿大特许专业会计师,微软 Excel MVP。他经营着 Excelguru 咨询公司,并通过 Skillwave培训平台教用户如何使用 Excel 和 Power BI。
米格尔.埃斯科瓦尔 (Miguel Escobar),在编写本书的时候是微软 Power BI MVP,并在巴拿马经营着一家名为 Powered Solutions 的咨询公司。在本书英文版即将出版时,米格尔收到一份令人兴奋的邀请函,即加入微软 Power Query 团队担任项目经理。
Pwwer Query是什么?
Power Query是微软“首席”自助式数据准备技术,可为非技术用户提供直观且高度可视化的体验,以便轻松连接到数百个数据源,用一致的习惯和方法清理和重塑数据,在后续数据报告、分析、低代码程序等场景中使用。在2010年它作为一个插件正式开始在Excel中被使用,现在它已经在超过8种不同的产品中被使用,包括Excel、Power BI、SQL Server In-tegration Services(SSIS)、Azure数据工厂等。
为什么选择这本“猴子书”作为学习PowerQuery的指南
在国内,关于Power Query的作品更多围绕操作细节和按钮解析,针对Power Query的运作逻辑,尤其是针对“怎么才算是清理到位了?”这个底层问题,很少有书能给予深入的解答。这本书由基础到进阶地介绍了Power Query和M函数,适用于各个阶段的读者学习:为初入门的小白构建了一套完整的Power Query知识体系,为专业人士提供了一系列优化查询的最佳实践,为业务伙伴指出了针对实际业务问题的解决方案。
详细目录
第0 章 导言:一场新的革命 1
0.1 数据分析师的常见场景 1
0.2 “魔法”的好处和危险 2
0.3 未来的改变 3
0.4 为什么说Power Query 有“魔力” 5
0.4.1 提取 5
0.4.2 转换 5
0.4.3 加载 6
0.5 Power Query 和产品体验的整合 7
0.5.1 Power Query 的组件 7
0.5.2 产品体验的整合 8
0.6 Power Query 的更新周期 8
0.6.1 Power Query 在线版 9
0.6.2 Microsoft 365 9
0.6.3 Excel 2016/2019/2021 9
0.6.4 Excel 2010 & 2013 9
0.6.5 Power BI 桌面版 10
0.7 如何使用本书 10
0.7.1 Microsoft 365 Excel 10
0.7.2 Power BI 桌面版 11
0.7.3 以前的Excel版本 11
0.7.4 单击“获取数据”按钮 11
0.7.5 特殊元素 12
第1 章 基础知识 13
1.1 开始之前 13
1.1.1 调整Excel默认设置 13
1.1.2 调整Power BI 桌面版默认设置 14
1.2 提取 14
1.2.1 选择数据 14
1.2.2 身份验证 15
1.2.3 预览窗口 15
1.2.4 查询处理 16
1.3 转换 17
1.3.1 编辑器 17
1.3.2 默认转换 18
1.3.3 源 18
1.3.4 将第一行用作标题 19
1.3.5 更改的类型 19
1.3.6 调整和修改转换 20
1.4 加载 22
1.4.1 设置数据类型 22
1.4.2 重命名查询 23
1.4.3 在Excel中加载查询 24
1.4.4 在Power BI 中加载查询 24
1.5 刷新查询 25
1.6 编辑查询 26
1.6.1 在Power BI 中启动查询编辑器 26
1.6.2 在Excel中启动查询编辑器 27
1.6.3 检查步骤 27
1.6.4 重新配置步骤 27
1.7 Power Query 的价值 29
第2 章 查询结构设计 31
2.1 使用多查询体系结构 31
2.1.1 对ETL进行分层 31
2.1.2 单个查询的好处 31
2.1.3 拆分查询的好处 32
2.1.4 关于“暂存”查询的 性能 32
2.2 查询的引用 34
2.2.1 创建基础查询 34
2.2.2 创建查询的引用 34
2.2.3 查询依赖关系树的可视化 37
2.2.4 使用Monkey工具查看依赖关系 38
2.3 选择查询加载目的地 38
2.3.1 在Power BI 中选择加载目的地 38
2.3.2 在Excel中选择加载目的地 39
2.3.3 更改加载目的地 41
2.4 保持查询的条理性 43
2.4.1 查询文件夹 43
2.4.2 将查询分配到文件夹 44
2.4.3 排列查询和文件夹 44
2.4.4 查询子文件夹 45
2.5 拆分现有查询 45
2.6 关于查询体系结构的最后思考 47
第3 章 数据类型与错误 49
3.1 数据类型与格式 49
3.1.1 数据格式 49
3.1.2 数据类型 49
3.1.3 如何设置数据格式 52
3.1.4 设置数据类型的顺序 53
3.1.5 数据类型的重要性 54
3.2 常见的错误类型 55
3.3 步骤级错误 56
3.3.1 数据源错误 56
3.3.2 没有找到某列 58
3.4 值错误 59
3.4.1 发现错误 60
3.4.2 无效的数据类型转换 61
3.4.3 不兼容的数据类型 63
3.5 检查查询错误 64
3.5.1 发现错误的来源 64
3.5.2 修复最初查询 65
3.5.3 删除错误查询 66
3.6 关于数据类型与错误的最后思考 66
第4 章 在Excel和Power BI间迁移查询 67
4.1 在工具之间迁移查询 67
4.1.1 Excel到Excel 68
4.1.2 Excel到Power BI 70
4.1.3 Power BI 到Excel 71
4.1.4 Power BI 到Power BI 71
4.2 导入查询 72
4.2.1 仅外部数据源 72
4.2.2 数据模型的导入 74
4.2.3 导入时复制数据 75
4.2.4 导入时保持连接 80
4.3 在工具之间迁移查询的思考 82
第5 章 从平面文件导入数据 84
5.1 了解系统如何导入数据 84
5.1.1 设置系统默认值 84
5.1.2 程序如何解析平面数据 85
5.2 导入带分隔符的文件 87
5.2.1 源数据文件 87
5.2.2 提取数据 88
5.2.3 错误的解析 88
5.2.4 使用区域设置 89
5.3 导入无分隔符的文本文件 92
5.3.1 连接到文件 92
5.3.2 清理无分隔符文件 93
5.3.3 按位置拆分列 94
5.3.4 利用查询中的错误 96
5.3.5 删除“垃圾列” 98
5.3.6 合并列 99
5.3.7 通过分隔符拆分列 99
5.3.8 修剪重复的空格 100
5.3.9 Power Query 的闪耀时刻 101
第6 章 从Excel导入数据 104
6.1 来自当前工作簿的数据 104
6.1.1 连接到表 105
6.1.2 连接到区域 106
6.1.3 连接到命名区域 108
6.1.4 连接到动态区域 110
6.1.5 连接到工作表 112
6.2 来自其他工作簿的数据 112
6.2.1 连接到文件 113
6.2.2 连接到表 114
6.2.3 连接到命名区域 115
6.2.4 连接到工作表 115
6.3 关于连接到Excel数据的最后思考 118
第7 章 常用数据转换 121
7.1 逆透视 121
7.1.1 准备数据 122
7.1.2 逆透视其他列 123
7.1.3 重新透视 124
7.1.4 应对变化 125
7.1.5 逆透视之间的区别 125
7.2 数据透视 126
7.3 拆分列 128
7.3.1 将列拆分为多列 129
7.3.2 将列拆分为多行 130
7.3.3 拆分后逆透视与拆分到行 131
7.4 筛选和排序 132
7.4.1 按特定值筛选 133
7.4.2 按上下文筛选 135
7.4.3 数据排序 137
7.5 数据分组 138
第8 章 纵向追加数据 141
8.1 基本追加 141
8.1.1 追加两个表 142
8.1.2 追加额外的表 145
8.2 追加列标题不同的数据 147
8.3 在当前文件中追加表和区域 148
8.3.1 合并表 149
8.3.2 合并区域或工作表 153
8.3.3 Excel.Current Workbook 155
8.4 关于追加查询的最后思考 155
第9 章 批量合并文件 156
9.1 示例文件背景介绍 156
9.2 过程概述 157
9.2.1 合并文件的标准流程 157
9.2.2 合并文件的通用架构 157
9.3 步骤0:连接到文件夹 159
9.3.1 连接到本地/ 网络文件夹 159
9.3.2 连接到SharePoint文件夹 160
9.3.3 连接到OneDrive for Business 162
9.3.4 连接到其他文件系统 162
9.4 步骤1:筛选文件 162
9.4.1 标准步骤 163
9.4.2 应用于示例场景 163
9.5 步骤2:合并文件 165
9.5.1 标准步骤 165
9.5.2 应用于示例场景 165
9.6 步骤3:转换示例文件 167
9.6.1 使用转换示例文件的原因 168
9.6.2 使用转换示例文件的方法 168
9.7 步骤4:通过主查询进行数据清理 171
9.7.1 修复主查询中的错误 171
9.7.2 保存文件属性 172
9.7.3 添加更多的步骤 173
9.8 更新解决方案 174
9.8.1 使用数据 175
9.8.2 添加新文件 175
9.8.3 只用最后几个文件以提升速度 176
第10 章 横向合并数据 179
10.1 合并基础知识 179
10.1.1 创建“暂存”查询 179
10.1.2 执行合并 180
10.2 连接类型 182
10.2.1 左外部连接 184
10.2.2 右外部连接 186
10.2.3 完全外部连接 187
10.2.4 内部连接 188
10.2.5 左反连接 189
10.2.6 右反连接 190
10.2.7 完全反连接 190
10.3 笛卡儿积(交叉连接) 191
10.3.1 方法 191
10.3.2 示例 192
10.3.3 意外问题 194
10.4 近似匹配 195
10.4.1 方法 195
10.4.2 示例 196
10.5 模糊匹配 198
10.5.1 基本模糊匹配 199
10.5.2 转换表 200
10.5.3 减小相似性阈值 201
10.5.4 保持模糊匹配的策略 203
第11 章 基于Web的数据源 204
11.1 连接到Web 数据文件 204
11.2 连接到HTML网页 205
11.2.1 连接到网页 206
11.2.2 自然表和建议表 206
11.2.3 使用示例添加表 207
11.3 连接到没有表的页面 209
11.4 从Web 获取数据的注意事项 212
11.4.1 收集数据的经验 213
11.4.2 数据完整性 213
11.4.3 解决方案稳定性 213
第12 章 关系数据源 214
12.1 连接到数据库 214
12.1.1 连接到数据库 214
12.1.2 管理凭据 216
12.1.3 无法连接 217
12.1.4 使用导航器 217
12.1.5 探索数据 218
12.2 查询折叠 221
12.2.1 理解查询折叠 221
12.2.2 支持查询折叠的技术 223
12.2.3 常见问题 224
12.3 数据隐私级别 225
12.3.1 声明数据隐私级别 226
12.3.2 管理数据隐私级别 227
12.3.3 隐私与性能 227
12.3.4 禁用隐私引擎 228
12.4 优化 230
第13 章 转换表格数据 233
13.1 透视 233
13.1.1 单列多行 233
13.1.2 多层行标题 237
13.1.3 多层列标题 239
13.2 逆透视 242
13.2.1 多层行标题 242
13.2.2 性能优化 248
13.2.3 重构 249
13.2.4 保留“null”值 250
13.3 分组 253
13.3.1 占总计的百分比 253
13.3.2 数据排序 254
13.3.3 分组编号 257
第14 章 条件逻辑 261
14.1 基础条件逻辑 261
14.1.1 数据集背景 261
14.1.2 连接到数据 262
14.1.3 通过用户界面创建条件逻辑 262
14.2 手动创建IF 判断 265
14.3 IFERROR函数 268
14.4 多条件判断 270
14.5 与上下行进行比较 273
14.6 示例中的列 276
第15 章 值系统 282
15.1 值类型 282
15.2 表 283
15.3 列表 284
15.3.1 语法 284
15.3.2 从头开始创建列表 284
15.3.3 将列表转换为表 286
15.3.4 从表列创建列表 287
15.3.5 创建列表的列表 288
15.4 记录 290
15.4.1 语法 290
15.4.2 从头开始创建记录 291
15.4.3 将记录转换为表 291
15.4.4 从头开始创建多个记录 292
15.4.5 将多个记录转换为表 293
15.4.6 按索引访问表记录 294
15.4.7 按条件访问表记录 295
15.4.8 从每个表行创建记录 298
15.5 值 300
15.6 二进制文件 300
15.7 错误 301
15.7.1 行级错误 301
15.7.2 步骤级错误 301
15.8 函数 302
15.9 关键词 304
15.9.1 二进制(#binary) 305
15.9.2 日期时间( #datetime) 306
15.9.3 时间(#time) 307
15.9.4 持续时间( #duration) 307
15.9.5 类型(type) 308
15.9.6 表(#table) 310
第16 章 理解M语言 314
16.1 M查询结构 314
16.1.1 查询结构 315
16.1.2 查询定义与标识符 316
16.1.3 关于通用标识符 318
16.1.4 代码注释 319
16.1.5 整体效果 320
16.2 理解查询计算 320
16.2.1 什么是延迟计算 321
16.2.2 查询计划 322
16.3 迭代器(逐行计算) 324
16.3.1 循环函数 324
16.3.2 关键词each和_ 324
16.4 其他技术 328
16.4.1 获取第一个值 328
16.4.2 错误保护 330
16.4.3 固定类型动态列表 331
16.4.4 自适应类型动态列表 334
第17 章 参数和自定义函数 338
17.1 重新创建合并文件 338
17.1.1 创建示例文件 339
17.1.2 创建示例文件参数 340
17.1.3 创建转换示例 341
17.1.4 创建转换函数 342
17.1.5 调用转换函数 342
17.1.6 更新转换函数 342
17.1.7 观察到的规律 343
17.2 使用参数构建自定义函数 344
17.2.1 创建文件路径参数 345
17.2.2 创建Timesheet转换 346
17.2.3 创建Timesheet函数 347
17.2.4 更新Timesheet查询 347
17.3 手动构建自定义函数 349
17.3.1 构建一个单一使用场景 350
17.3.2 将查询转换为函数 350
17.3.3 从另一个查询调用函数 352
17.3.4 调试自定义函数 353
17.3.5 恢复函数功能 355
17.4 动态参数表 355
17.4.1 动态文件路径问题 356
17.4.2 实现动态参数表 357
17.4.3 创建参数表 357
17.4.4 实现fnGetParameter函数功能 358
17.4.5 调用函数 359
17.5 参数表的意义 361
第18 章 处理日期时间 362
18.1 边界日期 362
18.1.1 计算边界日期 363
18.1.2 处理财政年度日期 364
18.1.3 处理364 日型 365
18.2 日期表 367
18.2.1 原子日期表 367
18.2.2 增强日期表 368
18.2.3 财政日期列 369
18.2.4 全局日期列 369
18.2.5 自定义日期表 371
18.2.6 示例说明 373
18.3 日期时间填充 374
18.3.1 日期级别填充 374
18.3.2 小时级别填充 376
18.3.3 带间隔的填充 377
18.4 按日期分摊 378
18.4.1 起止日内按日分摊 379
18.4.2 起止日内按月分摊 381
18.4.3 在开始日期后按月分摊 384
18.4.4 关于分摊 386
第19 章 查询优化 388
19.1 优化设置 388
19.1.1 全局−数据加载 388
19.1.2 全局−Power Query编辑器 388
19.1.3 全局−安全性 389
19.1.4 全局−隐私 389
19.1.5 当前工作簿−数据加载 389
19.1.6 当前工作簿−其他选项 390
19.2 使用缓存 391
19.2.1 强制计算 391
19.2.2 缓存结果 393
19.3 处理响应滞后 396
19.3.1 优化策略 397
19.3.2 体验响应滞后 397
19.3.3 重构解决方案 399
19.3.4 调整预览数据 401
19.4 处理公式防火墙 401
19.4.1 隐私级别不兼容 402
19.4.2 数据源访问 402
19.4.3 重建数据组合 402
19.4.4 连接式重构 404
19.4.5 展开式重构 406
19.4.6 传值重构 408
19.4.7 关于公式防火墙 410
第20 章 自动刷新 412
20.1 Excel自动刷新选项 412
20.2 Excel计划刷新 412
20.2.1 后台刷新 412
20.2.2 每x分钟刷新一次 413
20.2.3 打开文件时刷新数据 413
20.2.4 启用快速数据加载 413
20.3 用宏实现自动刷新 414
20.3.1 刷新单个连接 414
20.3.2 按特定顺序刷新 416
20.3.3 刷新所有查询 418
20.3.4 同步刷新的问题 418
20.4 Power BI 中的计划刷新 418