Power Query中批量处理操作(1)
(一) List.Transform
List.Transform(list as list, transform as function) as list
第1参数为需要进行批量处理的列表,第2参数是一个公式,针对批量处理的步骤;返回的结果也是一个列表。这里需要注意的是,在进行判断转换是,别忘了each或者(x)=>。
1. 批量运算
List.Transform({1..3}, each _*2)
=List.Transform({1..3},(x)=>x*2)
={1*2,2*2,3*2}={2,4,6}
解释:针对列表里每一个数字进行运算,分别乘以2得到最终的结果。其中x代表的就是{1..3}的列表中每一项。
2. 批量转换
List.Transform({1..3}, each Text.From(_))
=List.Transform({1..3},Text.From)
={“1”,”2”,”3”}
解释:针对数字{1,2,3}进行批量转换,转换函数为Text.From,把数字格式转换为文本格式。因为Text.From转换只需要单个参数,在这里可以省略each和_,效果相同。
List.Transform(List.Transform({1..3},Text.From),(x)=>"http://abc.com"&x)
=List.Transform({1..3},each "http//abc.com"&Text.From(_))
=
解释:通常用于批量网址的生成,就可以使用这个方式,x代表的是{1,2,3}列表各项,里面的数字为数值格式。首先通过批量把数字{1,2,3}转换成文本格式{"1","2","3"}才能进行文本之间的合并,随后才能针对文本进行合并生成新的链接网址。
3. 批量判断
List.Transform({1..3}, each _>2)
={1>2,2>2,3>2}
={FALSE,FALSE,TRUE}
解释:数字{1..3}列表,针对每一个数字与2进行比较,批量返回一个逻辑值结果的列表。
List.Transform({"ab","ac","bc"},(x)=>Text.Contains(x,"a"))
={TRUE,TRUE,FALSE}
解释:针对列表中查找是否包含关键词"a"的字符,返回一个逻辑列表结果。
4. 批量操作
List.Transform({"ab","ac","abc"},eachText.Select(_,{"a","c"}))
={"a","ac","ac"}
解释:批量把列表中带有"a"和"c"的挑选出来。
Text.Combine(List.Transform({"ab","ac","abc"},eachText.Select(_,{"a","c"})),"/")
=a/ac/ac
解释:批量把列表中带有"a"和"c"的挑选出来后并通过"/"分割组合成一个文本。"_"代表的是{"ab","ac","abc"}列表中的元素。
List.Combine(List.Transform({{"ab","ac","bc"},{"abc","bcd"}},(x)=>List.FindText(x,"a")))
={"ab","ac","abc"}
解释:在多个列表中进行处理,先批量找到包含"a"字符的列表内容,然后再组合成一个新的结果列表。
如果有用,动动你的小手进行转发。