按条件筛选行后提取 Table.SelectRows 函数详解

Table.SelectRows(table as table, condition as function) as table
参数1位需要操作的表;参数2是筛选的条件,为一个函数;返回的结果也是表。

例:
Table.SelectRows(源,each [学科]="语文") =
file

Table.SelectRows(源, each [成绩]>=List.Average(源[成绩]))=
file
解释:通过先计算成绩的平均值,然后再用成绩大于平均成绩作为条件进行筛选。

Table.SelectRows(源, each Text.Contains([姓名], "张") or Text.Contains([姓名],"李"))=
file
解释:筛选姓名包含"张"或者姓名包含"李"的结果。

Table.SelectRows(源, each List.ContainsAny(Text.ToList([姓名]),{"张","李"}))=
file
解释:和上面的结果是同样的,但是思路不一样。先通过Text.ToList函数把姓名拆分成单个字的列表,例如张三拆分成{"张","三"},李四拆分成{"李","四"}。随后用拆分后的这个列表去和另外一个含有关键词的列表去比较,List.ContainsAny代表的是任何匹配,也就是姓名拆分后的列表1和关键词的列表2只要有同一个关键词则作为成立的条件进行提取。如果这样写得话有优点是,可以指定一个列表的关键词去匹配,如果关键词很多那就不需要一个一个or去连接,而直接用列表去匹配。

Table.SelectRows(源, each List.Contains({"张三","张四","李四"},[姓名]))=
file
解释:这次把条件倒过来了,通过一个姓名列表去筛选源表中符合条件的数据。把姓名中含有{"张三","张四","李四"}这个列表的数据筛选出来。