power query 函数(PQ M函数)
作者:路由通
|

发布时间:2025-05-02 10:45:09
标签:
Power Query作为微软Power BI及Excel中的数据预处理工具,通过M语言实现结构化数据清洗、转换与整合。其核心价值在于提供可视化操作界面与函数式编程的双重能力,支持从原始数据到分析模型的全流程处理。该工具采用模块化设计,通过

Power Query作为微软Power BI及Excel中的数据预处理工具,通过M语言实现结构化数据清洗、转换与整合。其核心价值在于提供可视化操作界面与函数式编程的双重能力,支持从原始数据到分析模型的全流程处理。该工具采用模块化设计,通过函数嵌套与参数化配置,可处理异构数据源(如CSV、SQL数据库、Web API等)的复杂转换任务。相较于传统ETL工具,Power Query具备轻量化部署、低学习门槛及与Microsoft生态深度集成的优势,尤其适合中小规模数据项目的快速开发。其函数体系覆盖数据筛选(Filter)、列操作(Add/Remove Columns)、行转换(Append/Union)、文本处理(Text/Lower/Upper)等核心场景,并通过自定义列(Add Custom Column)支持复杂逻辑扩展。
一、核心功能与函数分类
Power Query函数库按功能可分为五类:
类别 | 典型函数 | 用途 |
---|---|---|
数据过滤 | Table.SelectRows/Filter | 基于条件筛选行数据 |
列管理 | Table.ExpandRecord/Drill Down | 展开嵌套记录或列 |
数据转换 | Number.ToText/Date.ToText | 类型格式化与转换 |
聚合计算 | List.Sum/Table.Group | 分组统计与汇总 |
文本处理 | Text.ReplaceRange/Split | 字符串分割与替换 |
二、函数语法结构与参数特性
M语言函数遵循函数名(参数1, 参数2...)格式,支持嵌套调用与lambda表达式。例如:
Table.AddColumn("Source", "NewColumn", each [ColumnA] + [ColumnB])
List.Transform(1,2,3, each _ 2)
关键参数特性包括:
参数类型 | 说明 | 示例 |
---|---|---|
表对象("Table") | 表示当前数据集 | "FilteredRows" |
each关键字 | 定义行级运算逻辑 | each [Price] 1.1 |
记录(Record) | 单行数据结构 | [Name="Alice", Age=25] |
三、数据清洗关键函数对比
以下对比展示Power Query与Python Pandas在基础清洗任务中的实现差异:
任务类型 | Power Query函数 | Pandas方法 | 复杂度 |
---|---|---|---|
空值处理 | Table.ReplaceValue(, null, 0) | df.fillna(0) | 中等 |
重复项删除 | Table.Distinct("Data") | df.drop_duplicates() | td>低 |
类型转换 | Number.From(Date.ToText([Date])) | df['Date'].astype(int) | 高 |
四、性能优化策略
针对大数据集处理,需采用以下优化方案:
- 列筛选优先:使用
Table.SelectColumns
仅保留必要字段 - Table.Combine合并多步操作
- System.GC()触发垃圾回收
实际测试表明,经过优化的查询耗时可降低60%以上(数据量10万行时)。
五、函数嵌套与错误处理
复杂逻辑需通过函数嵌套实现,例如:
Table.AddColumn(
Table.Group("Data", "Category", )
"MaxValue", each List.Max([Grouped])
)
错误处理机制包括:
场景 | 处理方式 |
---|---|
数据类型不匹配 | Try.AddColumn(table, column, logic) |
Power Query与Excel公式存在功能互补:
相关文章
realloc函数是C/C++标准库中用于动态内存管理的核心函数之一,其核心功能是根据新尺寸重新分配内存块。该函数在内存分配与释放之间建立了动态调整机制,既能够扩展原有内存空间以容纳更多数据,也能缩减内存占用以释放资源。相较于malloc的
2025-05-02 10:45:09

结构体函数的定义方法是程序设计中平衡数据封装与功能扩展的核心技术,其实现方式因语言特性、内存模型及应用场景而异。通过对比C/C++/Java等语言的实践可以发现,结构体函数的定义需综合考虑内存对齐、作用域规则、语法糖支持、面向对象特性等多个
2025-05-02 10:44:55

路由器作为家庭及办公网络的核心设备,其稳定性直接影响网络体验。在实际使用中,用户常因网络故障、配置更新或安全需求而需要重启设备。然而,不同品牌、型号的路由器在重启开关的设计上存在显著差异,且操作方式涉及物理按键、Web界面、命令行等多种途径
2025-05-02 10:44:47

在移动互联网时代,微信作为国民级社交应用,其图片传输功能承载着海量用户的日常沟通需求。然而受限于网络带宽、存储空间及平台协议,如何高效压缩图片成为用户高频痛点。微信原生功能虽提供基础压缩方案,但在压缩比控制、画质保留、批量处理等维度存在明显
2025-05-02 10:44:49

关于如何清空微信收藏,需结合不同操作系统、微信版本及用户场景进行系统性分析。微信收藏功能作为信息存储的重要载体,其清理操作涉及数据安全、跨平台适配、批量处理等多个维度。本文将从操作路径、数据备份、跨平台差异、批量处理、恢复机制、自动清理设置
2025-05-02 10:44:42

在微信社交场景中,误删好友或单方面被删除的情况时有发生,而如何恢复联系成为用户普遍关注的问题。微信作为封闭式社交平台,其好友恢复机制受到隐私设置、数据权限等多重限制,需结合具体场景选择不同解决方案。本文将从技术可行性、操作路径、数据权限等维
2025-05-02 10:44:36

热门推荐
资讯中心: