Power Query功能区 - 主页

关闭

关闭并上载,翻译一下,就是保存的意思。会把结果和查询的步骤都保存下来,结果会生成到Excel里。

查询

刷新预览

刷新的概念

刷新 = 重新执行查询步骤,从数据源读取最新数据并生成结果

当源数据(例如 Excel 表)发生变化时:

  • 不需要重新导入源数据
  • 不需要重新创建查询
  • 只需要点击刷新 → 查询会按照已有步骤重新生成最新结果

使用场景区分(手动&自动)

连接外部数据源(依赖手动刷新)
  • 查询在 Excel 表 A
  • 源数据来自 Excel 表 B、CSV、数据库等外部文件
  • 查询不会自动更新

需要手动刷新(或设置自动刷新)才能获取最新数据,手动刷新就是本小节提到的"刷新预览"和"全部刷新"

同一工作簿数据源(可能自动刷新)

例如:查询在 Sheet1,源数据在 Sheet2

  • Excel 可能触发内部联动刷新
  • 修改源数据后,查询结果往往会自动更新
  • 但这种更新不稳定,不应依赖

如果没有更新,需要手动刷新

刷新预览

  • 只作用于当前正在编辑的查询
  • 重新执行该查询步骤
  • 更新编辑器中的预览数据
  • ❗ 不会更新 Excel 中的最终结果

全部刷新

  • 作用于当前工作簿中的所有查询
  • 重新执行所有查询步骤
  • 更新所有查询结果(Excel表 / 数据模型)

举个例子

**例子1:**同一工作簿(可能自动刷新)

我有以下数据源sheet1

|-------|----|-----|----|
| | | | |
| 日期 | 客户 | 金额 | 地区 |
| 45292 | 张三 | 100 | 上海 |
| 45293 | 李四 | 200 | 北京 |
| | | | |
| 45294 | 王五 | 150 | 上海 |

我对这个表格/区域导入PQ,进行以下操作步骤,删除空行- 提升标题-筛选出"上海"数据,以下是查询结果。

那么我现在对查询进行保存后,修改sheet1的源数据,增加3行上海数据。

再次打开查询,会发现查询1的预览结果自动更新了,这个是Excel内部机制的自动更新,不稳定,但一般都会自动更新的。

**例子2:**外部数据源(必须手动刷新)

我们创建一个空白Excel表,链接一个外部数据源,创建2个查询,分别叫外部1,外部2。

外部数据源数据如下:

在空白Excel表导入该外部数据,创建的查询1筛选出北方的数据,查询2查询出东方的数据。

这个时候,我们修改外部的源数据,增加4行数据,2个北方,2个东方,保存更改。

这个时候,我们新建的查询并不会自动更新,我们需要手动的点击刷新。

若点击刷新预览,只会修改选中查询的结果

这个时候,外部2的查询是没有更新的,因为刷新预览只是更新当时在编辑的查询。

点击全部刷新,外部2的数据都会一起刷新了,全部刷新是针对全部的查询进行刷新。

配置刷新设置

可以更改刷新的配置,来配合自己的工作需求,比如我就不喜欢自动后台刷新,因为不小心改了什么数据我根本就不知道,那我就可以把后台刷新关闭了。

也可以设置全部刷新时,是否要刷新某个查询,也可以设置刷新频率等。

右键查询,点击'属性"即可设置。

属性(查询/修改名字+备注)

作用就是用于查询当前属性的名称和说明,当然也可以同步修改这些内容。

高级编辑器(M语言编辑器)

高级编辑器其实就是是M语言的编辑器,所有查询步骤本质都是M代码实现的。

右侧"应用的步骤"是 M 代码的可视化形式。

如果代码按"逐步命名"的方式编写,每一步都会显示为一个步骤;

如果使用嵌套或合并写法,则可能不会完整显示在步骤中。意思就是只有自己写代码时注意定义步骤,按"逐步命名"的方式,才会显示在右侧的步骤里。

  • 逐步命名:每一步都用一个变量名命名,并在下一步明确引用上一步 → 右侧"应用的步骤"会完整显示每一步。
  • 嵌套或合并写法:一行代码做多步处理,即使有变量名,也可能不会显示为独立步骤。
  • 结论:只有在自己写代码时注意拆分并逐步命名,才能保证每一步在右侧步骤里可见。

可以自己找AI要个代码添加到编辑器里面,测试一下。

管理(管理查询)

对当前查询进行,删除,复制,引用的操作。

管理列(选择列+删除列)

字面意思

减少行(指定行数)

字面意思

保留行

保留最前面几行,保护最后几行,这个几行是可以指定数目的,自己想搞几行就输入几行。

删除行

字面意思。

删除最前面机会,删除最后机会,这个几行是可以指定数目的,自己想搞几行就输入几行。

排序(Excel和PQ排序有差异)

PQ按照unicode排序

PQ的排序和Excel的排序不同,PQ的文本排序是按照unicode码排序的,而Excel在默认为中文系统的情况下,遇上汉字是按照拼音首字母排序的。

  • 数字列 → 直接按数值大小排序。
  • 文本列 → 按字符的 Unicode 编码 排序。
  • 常见错误:以为PQ这边汉字按拼音首字母排序。
    • 例如 "安""办":拼音分别是 AnBan,有人会以为 "安" 升序排在前。
    • 实际上,PQ 排序看的是 Unicode 编码,而不是拼音。
    • "安" 的 Unicode 比 "办" 大,所以升序时 "办" 在前,"安" 在后。
  • Unicode 是固定编码,和拼音无关。

规则如下:

  1. 按第一个字符的 Unicode 比较
    • Unicode 小 → 升序排前
    • Unicode 大 → 升序排后
  2. 如果第一个字符相同
    • 再比较第二个字符的 Unicode
    • 依次类推,直到能确定顺序
  3. 如果字符完全一样但长度不同
    • 短的排前(升序)

举个例子(Excel和PQ排序差异)

比如我现在对人名进行排序,有一下原始数据,未排序的哈

我在Excel表里对客户名字进行升序排序,结果如下,这是因为按照拼音首字母进行排序,Li,Wang,Zhang

我在PQ里对客户名字进行升序排序,结果如下,这是因为按照第一个字符的unicode进行排序了。

名字 第一个汉字 Unicode(十进制)
张三 24352
李四 26446
王五 29579

转换

参考前面的笔记功能区"添加列"或者功能区"转换",里面有解释。

组合

合并查询

应用场景

合并查询可以替代 Excel 中的 VLOOKUP / INDEX + MATCH 等操作,当然这个应用更广。

关键字段 = 用于匹配的列(对应 VLOOKUP 里的查找列)

  • 合并查询 = PQ 里的 可视化 VLOOKUP / XLOOKUP
  • 作用都是 按关键字段匹配,把另一张表的数据加到当前表里
Power Query Excel
匹配列(选中的列) 查找值列(VLOOKUP 第1列)
左表(主表) 当前表
右表(副表) 被查找的数据表

Excel vs Power Query 核心区别

  • Excel(VLOOKUP)
    • 需要指定返回第几列
    • 如果要返回多列 → 每一列都要写一个公式
    • 数据量大或字段多时,维护成本高
  • Power Query(合并查询)
    • 按关键字段匹配后
    • 可以一次性展开右表的多个列
    • 不需要重复写公式,只需点击展开

基本概念

在 Power Query(PQ)里,主页功能区的 "合并查询" 是用来把 两个或多个查询的数据按照某种关联关系(类似数据库的 Join)组合在一起

简单说,它就是 把两个表按指定字段匹配,把数据"拼"到一起

  • 查询 A查询 B 都是表格
  • 选择 一个或多个关键字段 (就是列名)作为匹配条件
  • 合并后会生成一个新的查询,把匹配上的数据加到左表(主表)里
  • 类似数据库里的 INNER JOIN / LEFT JOIN

常见操作步骤

  1. 在 PQ 主页功能区 点击 "合并查询"
  2. 选择 主表(左表)副表(右表)
  3. 选择 匹配列(比如名字、ID)
  4. 选择 联接类型 (Join 类型):
    • 左连接(Left Outer):保留左表全部行,右表匹配的列加进来
    • 右连接(Right Outer):保留右表全部行
    • 内连接(Inner):只保留匹配上的行
    • 全连接(Full Outer):左右表所有行,没匹配的空值
    • 左反连接(Left Anti):左表中没有匹配的行
    • 右反连接(Right Anti):右表中没有匹配的行
  5. 点击 确定 → 生成新的查询
  6. 展开右表列,选择需要合并进来的列

举个简单例子

用下面的例子自己试一遍上面的所有连接类型,就能理解每个联接类型的意思了。

A:工资表(主表)

员工 工资
张三 5000
李四 6000
王五 5500

表B:绩效表(副表)

员工 绩效
张三 优秀
李四 良好
赵六 良好

操作

左联接

结果(新查询)

生成的查询结果默认是table类型,可以点击字段右侧的展开按钮来展开数据

展开后

王五没有匹配 → 工号显示 null

Excel对应的操作

得写一个vlookup

追加查询

在 Power Query 里,"追加查询""合并查询" 不同,它不是按字段匹配,而是 把两个或多个表"上下叠加"成一个表,就像把表 A 放在表 B 的下面。

应用场景

可以把追加查询理解为一种"手动版的合并文件",但两者适用场景不同:

追加查询和合并文件各有适用场景:

  • 追加查询(Append Queries)
    • 适合:少量数据源
    • 特点:结构可以不完全一致(自动补 null)
    • 优点:灵活,可控
    • 缺点:需要手动逐个选择数据源
  • 合并文件(Combine Files)
    • 适合:批量文件(如一个文件夹下多个 Excel/CSV)
    • 特点:要求结构基本一致(如 sheet 名、列结构)
    • 优点:自动化,一次设置可长期复用
    • 缺点:结构不一致时容易出问题

基本概念

  • 追加查询 = 堆叠行
  • 要求表的 列名和列类型最好一致 ,否则 PQ 会自动对齐列名,不存在的列用 null 填充
  • 生成的新查询包含 所有表的所有行

举个例子

表A

姓名 部门
张三 财务
李四 销售

表B

姓名 部门
王五 技术
赵六 财务

操作

结果

可以看到,行是上下堆叠的,不是按某个字段匹配

如果是三个表及以上的查询追加

结果如下,追加结果是根据列数最多的表来,不存在的列用 null 填充

总结对比(合并/追加查询)

功能 操作方式 结果类型
合并查询 按匹配列连接(类似 Join) 左表 + 匹配列(列扩展)
追加查询 上下堆叠所有行 所有表行累加,列名对齐

参数

参数 = 可以被多个查询使用的"可修改变量",面对全局,不只是面对一个查询。

通俗理解的话,就是类比Excel里,绝对引用的单元格A1,参数就等于这个A1。

创建参数

管理参数-点图中的创建,就在右侧输入一些信息。

配置中,建议的值解释如下:

模式 含义 使用场景
任意值 参数可以填任何值 灵活,筛选文本、日期、数字都可以
列表中的值 你可以预先定义一个值列表,下拉选择 避免输入错误,比如地区参数只能选"上海/北京/广州"
查询 参数值来源于另一个查询生成的列表 数据驱动,例如可选年份列表、部门列表等

因此我们生成了一个参与,目前值是"上海"

使用参数(修改M代码)

打开查询1,手动筛选一下,M代码会自动生成,我们再打开高级编辑器,把这行代码复制下来。

筛选的行 = Table.SelectRows(更改的类型1, each ([地区] = "上海"))

修改这一行筛选的代码,改成以下内容,然后打开查询2,打开高级编辑器,复制上去

使用参数来筛选行 = Table.SelectRows(更改的类型1, each ([地区] = 地区参数))

代码修改完毕,确认后结果如下

那现在我想把筛选的值换成"北京",点击左侧的参数,修改值为"北京",查询2的结果就自动修改了

数据源(配置权限)

新建查询

就是新建一个查询,可以从外部导入,也可以自己手动输入数据,还可以创建自定义函数。

新建其他源 - 空白查询,一般用来创建函数,比如"添加列"功能区调用自定义函数时,就需要创建空白查询,输入代码来自定义一个函数。

相关推荐
今儿敲了吗2 小时前
DS-3 循环队列判断队满
数据结构·笔记·学习
m0_651562522 小时前
2026.3.23搭建AI算法可视化部署演示学习笔记
笔记·学习
renhongxia12 小时前
学习如何聚合零样本大型语言模型代理以进行企业披露分类
学习·语言模型·分类
im_AMBER2 小时前
Leetcode 147 零钱兑换 | 单词拆分
javascript·学习·算法·leetcode·动态规划
CDA数据分析师干货分享2 小时前
【经验贴】机械工程本科,CDA数据分析师学习及转行经验
数据挖掘·数据分析·excel·cda证书·cda数据分析师
CODE_RabbitV2 小时前
STM32F103C8T6 理论部分学习笔记
笔记·stm32·学习
snowfoootball3 小时前
自用常用提示词库(建设中)
学习
arvin_xiaoting3 小时前
OpenClaw学习总结_II_频道系统_5:Signal集成详解
java·前端·学习·signal·ai agent·openclaw·signal-cli
轻抚酸~3 小时前
403-Bypass(学习记录)
学习·web安全