← 返回首页目录
# 使用Power Query进行数据转换:从入门到实践

## 引言

在当今数据驱动的商业环境中,数据处理能力已成为企业决策的关键竞争力。Power Query作为微软推出的一款强大的数据连接和转换工具,能够帮助用户从多种数据源中提取数据,并通过直观的界面完成复杂的数据清洗和转换工作。本文将以Northwind OData数据源为例,系统性地介绍Power Query的核心功能、操作流程和最佳实践,帮助读者掌握这一重要工具的使用方法。

## Power Query概述

Power Query是一个内置于多种Microsoft产品中的数据连接与转换引擎,包括Power BI Desktop、Excel、Power Apps、Dynamics 365 Customer Insights以及Azure Data Factory等。它的核心价值在于其"获取数据-转换数据-加载数据"的三步工作流,能够将原本需要编写复杂代码的数据处理任务,转化为简单的图形化操作。

对于初学者而言,可以通过注册Power BI免费试用版或下载Power BI Desktop,来体验Power Query完整的功能。本文所演示的案例将使用广泛使用的Northwind OData公共数据源,该数据源包含了客户、供应商、产品、订单等经典业务数据,非常适合作为学习Power Query的练习素材。

## 连接数据源:获取数据体验

### 获取数据的核心流程

Power Query的"获取数据"(Get Data)体验是其工作流的起点。这一过程包含三个关键步骤:选择合适的数据源连接器、配置连接参数和身份验证方式、选择需要导入的数据对象。

以连接OData数据源为例,操作流程如下:在Power Query界面中,点击"获取数据"按钮,在搜索框中输入"OData"找到对应连接器。然后输入Northwind服务的URL地址(https://services.odata.org/V4/Northwind/Northwind.svc/),选择匿名身份验证方式(因为该服务无需认证即可访问),点击"连接"按钮。在随后弹出的导航器中,系统会列出该服务下的所有数据表,用户可以预览数据并勾选所需导入的表。

### 数据源连接器的重要性

Power Query支持超过100种数据连接器,涵盖数据库(SQL Server、Oracle、MySQL等)、文件(Excel、CSV、JSON、XML等)、云服务(Azure、Salesforce、SharePoint等)以及大数据平台(Hadoop、Spark等)。丰富的连接器生态使得Power Query能够满足绝大多数企业的数据接入需求。

在连接数据时,需要注意以下几点:一是确认数据源的网络可达性和访问权限;二是正确选择身份验证方式(Windows认证、数据库认证、API密钥等);三是合理配置网关(特别是在本地数据源和云端服务之间传输数据时)。

## Power Query编辑器界面解析

### 五大核心组件

Power Query编辑器是执行数据转换工作的主要环境,其用户界面由五个核心组件构成,每个组件都有其独特的功能定位:

**功能区(Ribbon)** :位于编辑器顶部,提供多个功能选项卡,包括"主页"、"转换"、"添加列"、"视图"等。每个选项卡下汇集了相关的操作按钮,这种组织方式使用户能够快速找到所需功能。

**查询窗格(Queries Pane)** :位于左侧,显示当前工作区中的所有查询列表。用户可以在此处管理查询的层级结构、创建查询分组(例如按业务流程或数据域进行分组),以及快速切换当前操作的查询。

**当前视图(Current View)** :占据编辑器中央区域,是用户的主要工作区。默认显示数据预览视图,展示当前查询步骤执行后的数据表格。此外还支持切换到架构视图和数据图视图,多角度审视数据结构。

**查询设置窗格(Query Settings Pane)** :位于右侧,展示当前选中查询的属性信息,包括查询名称、应用步骤列表以及各种配置选项。该窗格对于理解和管理查询的执行逻辑至关重要。

**状态栏(Status Bar)** :位于编辑器底部,实时显示查询的执行状态、运行时间、总行数和列数等信息,同时提供视图切换按钮。

### 界面导航技巧

熟练掌握界面导航是提高工作效率的关键。用户可以通过点击各窗格右上角的折叠图标,暂时隐藏不需要的窗格,以最大化数据预览区的显示面积。在"视图"选项卡中,可以灵活控制各个窗格的显示与隐藏,还可以切换不同的视图模式。

特别值得一提的是Power Query Online(在线版)独有的架构视图(Schema View)和数据图视图(Diagram View)。架构视图专注于数据表结构的展示,适合执行列级的操作(如删除列、重命名列、修改数据类型等);而数据图视图则以可视化方式展示查询步骤之间的依赖关系,每条连线代表数据流的方向,每个节点代表一个查询步骤,便于理解复杂查询的整体逻辑。

## 核心数据转换操作

### 常见转换功能概览

Power Query提供了丰富的数据转换功能,可满足从简单的列管理到复杂的聚合运算等各种需求。以下是一些常用的转换操作类型:

- **列操作**:选择列、删除列、重命名列、复制列、移动列位置
- **行操作**:筛选行、删除重复值、保留或删除错误行、排序
- **数据类型转换**:修改列的数据类型(文本、数字、日期、布尔值等)
- **文本处理**:拆分列、合并列、提取文本、替换值、大小写转换
- **数字计算**:四则运算、取整、绝对值、对数等数学函数
- **日期时间处理**:提取年月日、时间差计算、日期范围过滤
- **表操作**:分组汇总、合并查询、追加查询、转置表、逆透视列

### 使用数据图视图进行分组

分组(Group By)操作是数据汇总的基础功能。在Power Query中,可以通过多种方式启动分组操作:在功能区点击"分组依据"按钮、右键点击要分组的列,或在数据图视图中点击步骤节点上的加号按钮。以本案例为例,要实现按国家/地区统计客户数量:

1. 进入数据图视图(Diagram View),找到客户查询的当前步骤
2. 点击步骤节点上的加号(+)图标,在搜索框中输入"Group By"
3. 在分组对话框中,选择"基本"分组模式
4. 设置分组依据为"国家/地区"列
5. 设置新列名为"客户数",操作选择"对行进行计数"
6. 点击"确定"完成分组

执行后,数据处理结果即时更新,展现出每个国家/地区的客户数量汇总。Power Query会为每个转换步骤自动生成对应的M语言代码,即使是不具备编程能力的用户,也能通过图形界面完成复杂的数据操作。

## 多查询管理与查询引用

### 添加新查询

在实际业务场景中,通常需要组合多个数据源进行分析。继续以上述案例为例,在完成客户分组的基础上,需要添加供应商数据以进行更深入的分析。具体操作为:

1. 在Power Query编辑器中点击"获取数据"按钮
2. 选择OData连接器,按照前文所述方式连接到Northwind服务
3. 在导航器中选择"供应商"数据表
4. 点击"创建"按钮,将新表作为独立查询添加到编辑器中

此时,查询窗格中将显示"客户"和"供应商"两个查询。我们同步对供应商数据执行分组操作,生成按国家/地区统计的供应商数量查询,命名为"供应商"。

### 查询引用的价值

查询引用(Reference)是Power Query中一个非常实用的功能,它允许创建一个指向现有查询输出的新查询。与直接复制查询不同,引用查询与源查询保持动态关联,当源查询发生变更时,引用查询会自动同步更新。

创建查询引用的操作极为简便:在查询窗格中右键点击"客户"查询,选择"引用"选项。Power Query会创建一个以"客户 (2)"命名的新查询,随后我们可以将其重命名为"国家/地区分析",以便清晰地表达其业务用途。

引用功能虽然简单,但却是构建复杂的查询依赖关系的基础,特别适用于需要基于同一数据源进行多种不同维度分析的场景,能够有效避免重复的数据预处理工作,提升开发效率。

## 合并查询:整合多方数据

### 连接类型的选择

合并查询(Merge Queries)是Power Query中最为强大的功能之一,它类似于SQL中的JOIN操作,能够基于一个或多个共同关键字段将两张数据表进行关联。选择正确的连接类型对于保证分析结果的准确性至关重要。

在客户与供应商合并案例中,我们需要找出同时拥有客户和供应商的国家/地区,因此选择"内部连接"(Inner Join)类型。Power Query支持多种连接类型:

- **内部连接**:仅返回两边都匹配的行
- **左外部连接**:返回左侧表所有行,右侧表无匹配时填充null
- **右外部连接**:返回右侧表所有行,左侧表无匹配时填充null
- **完全外部连接**:返回两边所有行,无匹配时填充null
- **左反连接**:返回仅在左侧表中存在的行
- **右反连接**:返回仅在右侧表中存在的行

### 合并查询的实际操作

在"国家/地区分析"查询中执行合并操作的具体步骤:

1. 在"主页"选项卡中点击"合并查询"按钮
2. 在下拉菜单中,分别选择要合并的查询("客户"和"供应商")
3. 在两个查询中均选择"国家/地区"作为匹配列
4. 选择"内部连接"作为连接类型
5. 点击"确定"完成合并

合并完成后,查询结果中会新增一列包含供应商数据的嵌套表。点击该列标题右侧的展开图标,在展开选项中选择需要保留的字段(本案例中选择"供应商"字段),点击"确定"后即可将嵌套数据展开为独立列。最后,将展开生成的"供应商.1"字段重命名为"供应商数量",完成数据整合。

通过熟练运用合并功能,我们能够轻松地将多个数据源的信息整合成统一的分析视图,为后续计算和数据可视化奠定基础。

## 应用步骤与查询设置

### 理解应用步骤机制

Power Query的每一次转换操作都会记录在"应用步骤"(Applied Steps)列表中,形成一条清晰的数据处理流水线。这个看似简单的设计,实际上为数据操作带来了极大的灵活性和可追溯性。

**步骤回放**:用户可以点击列表中的任意步骤,数据预览区会立即显示该步骤执行完成后的结果状态,帮助理解每一步操作对数据的影响。

**步骤管理**:右键点击某个步骤,可以执行重命名、删除、插入等操作。重命名步骤可以赋予其更具业务含义的名称(例如将"Nav table expanded"改为"展开供应商数据"),使查询逻辑更易理解和维护。

**动态更新**:在步骤列表中插入新步骤,删除不在需要的中间步骤,或修改某一步骤的参数,Power Query会自动重新计算后续步骤的执行结果,确保数据一致性。

### 查询属性与最佳实践

每个查询都可以配置独立的属性信息,包括查询名称和描述。在复杂的数据模型中,为查询添加中文描述作为业务注释,能够显著提升可读性和可维护性。右键点击查询或步骤,选择"属性"选项,即可编辑这些信息。

## 添加计算列:为分析赋能

完成客户和供应商数据合并之后,下一步是计算客户与供应商比率。这一操作实现了从原始数据到分析指标的价值转换:

1. 确保当前处于"数据预览"视图(关闭数据图视图以获得更大的工作空间)
2. 在"Ajouter une colonne"选项卡的"从数字"组中,选择"标准"下拉菜单
3. 选择"除(整数)"操作
4. 分别选择"客户数"列和"供应商数量"列作为分子和分母
5. 将生成的"整数除法"列重命名为"比率"

在创建计算列时,特别是涉及除法运算时,需要注意数据中的零值或空值情况。Power Query会为这些场景自动生成错误值或空值,用户需要根据业务规则选择适当的错误处理方式(例如使用条件列先判断分母是否为零再进行除法计算)。

## 数据剖析:洞察数据质量

数据剖析(Data Profiling)是PowerQuery内置的数据质量检测工具,能够在数据预处理阶段帮助用户识别潜在的数据问题。启用数据剖析功能后,编辑器会在每个列的上方显示三个关键的统计信息图标:

- **列质量(Column Quality)** :以图表形式展示"有效值"、"错误值"和"空值"的比例分布
- **列分布(Column Distribution)** :展示不同值在列中的分布情况,帮助发现数据不平衡问题
- **列概况(Column Profile)** :提供最小值、最大值、平均值、唯一值数量等详细统计信息

在Power Query中,用户可以选择开启不同的数据剖析选项,从简单的列质量统计到完整的字段概况面板。这种渐进式的数据质量监控机制,让分析师能够在数据进入下游流程之前及时发现问题、清理数据。

## 高级编辑器的深入学习

### M语言的入口

高级编辑器(Advanced Editor)为有进阶需求的用户提供了直接查看和编辑M语言代码的能力。虽然Power Query的图形界面已经能够完成绝大多数转换任务,但高级编辑器仍是深入学习数据查询和实现高度定制化逻辑的核心工具。

打开高级编辑器的方法:在"视图"选项卡中点击"高级编辑器"按钮。编辑器窗口展示了当前查询完整生成的M语言代码,用户可以在此直接修改代码逻辑,每次修改后,Power Query会进行语法检查,并在编辑器底部显示错误提示(如果有的话)。

### M语言的基础语法

M语言是一种函数式、大小写敏感的语言,核心语法包括:

- **let和in结构与表达式**:查询从let关键字开始定义变量,以in关键字的表达式作为输出
- **数据操作函数**:命名空间为"#"前缀,函数名以点号分隔,参数用括号传入
- **数据类型转换**:数据类型名称以"#"开头,例如#date的类型
- **行和列操作**:函数接口以"Table."和"List."等前缀命名,例如Table.SelectColumns、Table.Group等

## Power Query帮助资源

### 产品内的帮助入口

在Excel、Power BI Desktop及其他集成Power Query的产品中,可以通过多种方式查阅帮助文档。例如,在Power Query编辑器中,可以通过"文件"菜单中的"帮助"选项访问在线文档;在Excel的功能区中,也可以通过"帮助"选项卡搜索"Power Query"获取相关信息。

### 在线学习资源

微软为Power Query提供了丰富的学习资源,帮助用户深入掌握该工具。主要的资源包括:

- **官方文档**: Power Query文档中心提供了从入门到进阶的完整技术文档
- **键盘快捷键指南**:帮助用户提高操作效率
- **Power Query社区**:用户可以在社区中提问、分享经验
- **产品博客**:了解最新功能更新和使用技巧
- **功能请求平台**:提交产品改进建议

### M函数内联帮助

在Power Query编辑器中,用户可以直接查询M函数的使用说明。操作方法是点击"插入步骤"按钮后,在公式栏中输入函数名称,然后在查询设置窗格中选择"所有属性",系统会显示该函数的参数说明和用法指南,提供了便捷的学习途径。

## 总结

通过本文的案例实践,我们系统地完成了从数据获取、基础转换、分组聚合、多表合并到计算列生成和数据分析的完整数据工作流。我们掌握了Power Query编辑器各组件和界面的使用方法,理解了查询引用、合并连接、应用步骤等核心概念的运作机制。

Power Query作为现代数据工作流的重要组成部分,其价值不仅体现在快速的数据处理能力上,更在于它降低了数据处理的技术门槛。将原本需要专业工程师编写代码的任务转化为直观的图形化操作,使得业务分析师能够自助完成数据准备和转换工作,显著缩短了从原始数据到分析洞察的路径。

在后续的数据分析实践中,建议读者继续探索Power Query的高级功能(如自定义函数、条件逻辑、错误处理等),将Power Query的熟练运用作为构建高效数据驱动决策体系的重要基石。