在 Power Query 中,M 语言是一种函数式语言,用于数据导入、转换和组合。以下是 M 语言的基本语法结构和一些常用的语法元素。
M 语言基本语法结构
1.Let 语句
let 语句用于定义查询中的变量和表达式。其基本结构如下:
let
// 定义变量
变量1 = 表达式1,
变量2 = 表达式2,
...
in
// 返回最终结果
最终表达式
2.变量和函数
- 变量:可以存储值、表格或其他数据类型。
- 函数:可以使用 => 定义匿名函数,或使用 each 关键字在表格操作中简化函数定义。
// 定义变量
变量1 = 1 + 1,
变量2 = Table.AddColumn(原始表格, "新列", each [列1] + [列2])
3.注释
- 单行注释使用 //。
- 多行注释使用 /* */。
常用的 M 语言函数和操作
1.数据源连接
- Excel 文件:
Excel.Workbook(File.Contents("路径\文件名.xlsx"), null, true)
- CSV 文件:
Csv.Document(File.Contents("路径\文件名.csv"), [Delimiter=",", Columns=列数, Encoding=65001, QuoteStyle=QuoteStyle.None])
2.表格操作
选择列:
Table.SelectColumns(表格, {"列1", "列2"})
筛选行:
Table.SelectRows(表格, each [列名] = 条件)
添加列:
Table.AddColumn(表格, "新列名", each [列1] + [列2])
移除列:
Table.RemoveColumns(表格, {"列1", "列2"})
更改列类型:
Table.TransformColumnTypes(表格, {{"列名", 类型}})
3.数据转换
文本转换:
Text.Upper("文本") // 转为大写
Text.Lower("文本") // 转为小写
Text.Trim(" 文本 ") // 去除空格
数值转换:
Number.FromText("123") // 文本转为数字
Number.Round(123.456, 2) // 四舍五入
日期时间转换:
Date.FromText("2023-01-01") // 文本转为日期
DateTime.LocalNow() // 当前本地日期时间
示例
以下是一个完整的 M 语言示例,用于从 Excel 文件中导入数据、进行数据转换,并返回最终结果:
let
// 从 Excel 文件中导入数据
Source = Excel.Workbook(File.Contents("C:\路径\文件名.xlsx"), null, true),
// 导入名为 "Sheet1" 的表
Sheet1 = Source{[Name="Sheet1"]}[Content],
// 选择需要的列
SelectedColumns = Table.SelectColumns(Sheet1, {"列1", "列2", "列3"}),
// 筛选符合条件的行
FilteredRows = Table.SelectRows(SelectedColumns, each [列1] > 10),
// 添加计算列
AddedColumn = Table.AddColumn(FilteredRows, "新列", each [列2] + [列3]),
// 更改列类型
ChangedType = Table.TransformColumnTypes(AddedColumn, {{"新列", type number}})
in
// 返回最终结果
ChangedType
这个示例展示了从 Excel 文件中导入数据、选择列、筛选行、添加计算列以及更改列类型的全过程。通过理解这些基本的语法结构和常用操作,可以帮助你高效地使用 Power Query M 语言进行数据处理和转换。