M语言:数据处理与分析的利器
M语言基础
M语言,即Power Query Formula Language,是微软为数据准备和转换设计的一种声明式编程语言。它特别适合于Excel、Power BI等应用中的数据清洗和预处理。
核心概念
- 数据源: 数据的来源,如Excel表格或数据库。
- 查询: 从数据源中提取和转换数据的操作序列。
- 步骤: 查询中的单个数据转换操作。
- 函数: 执行特定数据操作的基本构建块。
数据操作技巧
数据类型与结构
| 类型 | 描述 | 示例 |
|---|---|---|
| 数值型 | 整数或浮点数 | let x = 100, y = 3.14 |
| 字符型 | 文本信息 | let text = "Hello World" |
| 日期时间型 | 时间信息 | let date = #date(2023, 1, 1) |
数据转换示例
// 合并两个表格
let
tblA = ...,
tblB = ...,
mergedTbl = Table.Combine({tblA, tblB})
in
mergedTbl
// 对表格进行排序
let
sourceTbl = ...,
sortedTbl = Table.Sort(sourceTbl,{{"ColName", Order.Ascending}})
in
sortedTbl
自定义函数
定义与调用函数
自定义函数允许用户根据需要编写代码,简化重复任务。
// 定义一个平方函数
let
squareFn = (num as number) => num * num,
result = squareFn(5)
in
result
动态函数创建
// 动态创建函数
let
createFunc = () => (n as number) => n + 1,
dynamicFunc = createFunc(),
finalResult = dynamicFunc(3)
in
finalResult
条件逻辑与脚本优化
if语句
用于控制程序流程,基于条件执行不同的代码路径。
if condition then
// 条件为真时执行
else
// 条件为假时执行
性能优化策略
- 减少不必要的数据转换。
- 在查询步骤中完成所有必要的数据清洗。
- 使用高效的算法和逻辑。
M语言与Power BI集成
增强数据模型
M语言可用于创建计算列和度量值,从而增强数据分析能力。
// 计算销售额增长
let
salesCurrent = [Sales],
salesPrevious = CALCULATE([Sales], DATEADD('Date'[Date], -1, YEAR)),
growthRate = (salesCurrent - salesPrevious) / salesPrevious
in
growthRate
自定义查询
利用M语言可以从多种数据源导入数据,并进行复杂的清洗和转换。
// 导入Web数据并清洗
let
src = Web.Page(Web.Contents("http://example.com/data")),
data = src{0}[Data],
cleanedData = Table.SelectRows(data, each [Column1] <> null)
in
cleanedData
M语言与VBA对比
VBA简介
VBA(Visual Basic for Applications)主要用于Office应用程序的自动化,如Excel宏。
两者比较
- 目标平台: VBA针对Office产品,而M语言专注于Power BI和Power Query。
- 开发环境: VBA通常嵌入在Excel宏编辑器中,M语言则通过Power Query编辑器编辑。
- 适用场景: VBA适用于简单的自动化任务,M语言更适合复杂的数据处理。