在Power Query的M语言中,List.Generate函数是一种强大的工具,用于生成自定义列表。List.Generate通过定义初始值、条件、下一步和可选的转换函数来生成一个列表。
List.Generate的基本语法结构如下:
List.Generate(initial as function, condition as function, next as function, optional selector as nullable function) as list
- initial: 生成列表的初始值。
- condition: 用于确定是否继续生成下一个值的条件函数。
- next: 用于生成下一个值的函数。
- selector(可选):用于从生成的值中选择所需部分的函数。
示例
假设我们希望生成一个从1开始的整数列表,直到值大于10为止,每次增加2。可以使用以下代码:
let
result = List.Generate(
() => 1, // initial: 初始值为1
each _ <= 10, // condition: 条件为当前值小于等于10
each _ + 2 // next: 每次递增2
)
in
result
这段代码将生成以下列表:
结果
生成的列表 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
带选择器的示例
如果我们希望生成的列表包含自定义的记录结构,例如生成一个包含日期和对应值的列表,可以使用selector:
let
startDate = #date(2023, 1, 1),
result = List.Generate(
() => [Date = startDate, Value = 1], // initial: 包含日期和初始值的记录
each [Value] <= 5, // condition: 条件为Value小于等于5
each [Date = Date.AddDays([Date], 1), Value = [Value] + 1], // next: 日期加一天,值加1
each [Date] // selector: 只选择日期部分
)
in
result
这段代码将生成以下列表:
结果
生成的列表 |
2023-01-01 |
2023-01-02 |
2023-01-03 |
2023-01-04 |
2023-01-05 |
通过 List.Generate 函数,你可以灵活地创建各种自定义列表,满足不同的数据处理需求。这个函数特别适用于需要基于复杂逻辑生成序列或记录的情况,充分发挥了Power Query的强大数据处理能力。