M 公式语言

Excel 中级 Power Query

Lyndsay Girard

Performance Analytics Consultant

高级编辑器

  • 用 M 公式语言(M 代码)编写
    • 区分大小写
  • Let 表达式包含两部分:
    • "let"和"in"子句
    • 逗号分隔的变量名或步骤标识符列表
      • 每步通过引用其名称构建在前一步之上
    • "in"子句后的步骤为可见查询输出
let
    Source = ""
in
    Source
Excel 中级 Power Query

高级编辑器

let
    MyTable = Table.FromRecords({
    [ID = 1, Name = "A", Result = 10],
    [ID = 2, Name = "B", Result = 5]})
in
    MyTable

包含 1 步的 Let 表达式

Excel 中级 Power Query

高级编辑器

let
    MyTable = Table.FromRecords({
    [ID = 1, Name = "A", Result = 10],
    [ID = 2, Name = "B", Result = 5]}),
    #"Sorted Rows" = Table.Sort(MyTable,{{"Result", Order.Ascending}})
in
    #"Sorted Rows"

包含 2 步的 Let 表达式

Excel 中级 Power Query

高级编辑器

let
    MyTable = Table.FromRecords({
    [ID = 1, Name = "A", Result = 10],
    [ID = 2, Name = "B", Result = 5]}),
    #"Sort" = Table.Sort(MyTable,{{"Result", Order.Ascending}}),
    #"Lower" = Table.TransformColumns(#"Sort",{{"Name", Text.Lower, type text}})
in
    #"Lower"

包含 3 步的 Let 表达式

Excel 中级 Power Query

值类型

原始类型

  • 单段值(如数字、逻辑、文本或 null)
    [ID = 1, Name = "A"]
    

结构化类型

  • 列表
  • 记录
  • 函数
Excel 中级 Power Query

结构化值类型

列表:

  • 从零开始的单列有序值序列
    List = {1,2,3}
    

记录:

  • 单行多列的结构
    Record = [Column1=1,Column2=2]
    

表:

  • 多行多列的组合
    Table = #table({"Column A","Column B"},
          {{1,10},{2,20}})
    
Excel 中级 Power Query

M 内置函数

函数:

  • 以参数调用时返回新值的值
  • 表函数
  • 列表函数
  • 数值函数
  • 记录函数
  • 日期函数
  • 时间函数
  • 时长函数
  • ……还有更多!
1 https://learn.microsoft.com/en-us/powerquery-m/power-query-m-function-reference
Excel 中级 Power Query

自定义函数

  • 复杂计算
  • 可复用性
  • 参数化
  • 性能优化

 

  自定义函数语法:

= (Variable as Data Type, Variable as Data Type) => (Output Expression)
Excel 中级 Power Query

自定义函数

简单的自定义函数示例:

let
    MyFunction = (x) => x + 1
in
    MyFunction(10)

     

Ch3_simple_custom_function.png

Excel 中级 Power Query

查询参数

  • 占位符,用于将值动态传入查询
    • 让查询更灵活、可复用
      • 动态筛选
      • 自定义函数

手调节滑块按钮,更改屏幕上的应用设置。使用切换开关自定义界面

Excel 中级 Power Query

Vamos praticar!

Excel 中级 Power Query

Preparing Video For Download...