《精通 Power Query》封面

内容简介

本书是PowerQuery领域的经典之作,旨在让读者用正确而高效的方法精通PowerQuery。本书是两位作者多年积累的业务和IT工作经验总结,同时也是全球PowerQuery顶级社群的大咖经验提炼。本书从业务背景出发,在业务和IT之间做到了良好的平衡,系统化地给出了PowerQuery的思维框架和模式,同时按照多个企业级业务场景一一展示其实用性。

无论你是PowerQuery的新手还是经验丰富的ETL专家,都可以从各自的角度领略PowerQuery和M语言的魅力。对于业务用户,本书给出了日常办公所涉及的大量复杂数据问题解法的直接参考,并提供了大量案例,可以直接应用。对于专业用户,本书给出了搭建大型专业数据项目的框架性流程指导及优化建议,并提供了相关案例,也可以直接复用。

作者简介

肯·普尔斯(KenPuls)是加拿大特许专业会计师,微软ExcelMVP。他经营着Excelguru咨询公司,并通过Skillwave培训平台教用户如何使用Excel和PowerBI。

米格尔·埃斯科瓦尔(MiguelEscobar),在编写本书的时候是微软PowerBIMVP,并在巴拿马经营着一家名为PoweredSolutions的咨询公司。在本书英文版即将出版时,米格尔收到一份令人兴奋的邀请函,即加入微软PowerQuery团队担任项目经理。

BI佐罗团队,是基于对数据分析的爱好而形成的爱好者社区,活跃成员包括微软MVP、LVMH集团数据分析师、企业CFO等。2015年以来,经过多年发展,团队已经孵化出不同行业的数据咨询类企业,尤其在零售、快消、餐饮、汽车等行业聚集和沉淀了专业的研究成果,且已为50余家企业提供了数字化转型“开箱即用”的落地方案。团队通过“PowerBI战友联盟”的微信公众号、“BI佐罗”的小红书、B站、抖音等平台,持续为社区带来知识分享,也欢迎广大爱好者一起交流讨论。

目录

第0章 导言:一场新的革命1
0.1 数据分析师的常见场景1
0.2 “魔法”的好处和危险2
0.3 未来的改变3
0.4 为什么说PowerQuery有“魔力”5
0.4.1 提取5
0.4.2 转换5
0.4.3加载6
0.5 PowerQuery和产品体验的整合7
0.5.1 PowerQuery的组件7
0.5.2 产品体验的整合8
0.6 PowerQuery的更新周期8
0.6.1 PowerQuery在线版9
0.6.2 Microsoft3659
0.6.3 Excel2016/2019/20219
0.6.4 Excel2010&20139
0.6.5 PowerBI桌面版10
0.7 如何使用本书10
0.7.1 Microsoft365Excel10
0.7.2 PowerBI桌面版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 调整PowerBI桌面版默认设置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 在PowerBI中加载查询24
1.5 刷新查询25
1.6 编辑查询26
1.6.1 在PowerBI中启动查询编辑器26
1.6.2 在Excel中启动查询编辑器27
1.6.3 检查步骤27
1.6.4 重新配置步骤27
1.7 PowerQuery的价值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 在PowerBI中选择加载目的地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和PowerBI间迁移查询67
4.1 在工具之间迁移查询67
4.1.1 Excel到Excel68
4.1.2 Excel到PowerBI70
4.1.3 PowerBI到Excel71
4.1.4 PowerBI到PowerBI71
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 PowerQuery的闪耀时刻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.CurrentWorkbook155
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 连接到OneDriveforBusiness162
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 全局−PowerQuery编辑器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 PowerBI中的计划刷新418
······

最后修改:2024 年 07 月 25 日