按条件筛选行后提取 Table.SelectRows 函数详解
Table.SelectRows(table as table, condition as function) as table
参数1位需要操作的表;参数2是筛选的条件,为一个函数;返回的结果也是表。
例:Table.SelectRows(源,each [学科]="语文")
=
Table.SelectRows(源, each [成绩]>=List.Average(源[成绩]))
=
解释:通过先计算成绩的平均值,然后再用成绩大于平均成绩作为条件进行筛选。
Table.SelectRows(源, each Text.Contains([姓名], "张") or Text.Contains([姓名],"李"))
=
解释:筛选姓名包含"张"或者姓名包含"李"的结果。
Table.SelectRows(源, each List.ContainsAny(Text.ToList([姓名]),{"张","李"}))
=
解释:和上面的结果是同样的,但是思路不一样。先通过Text.ToList函数把姓名拆分成单个字的列表,例如张三拆分成{"张","三"},李四拆分成{"李","四"}。随后用拆分后的这个列表去和另外一个含有关键词的列表去比较,List.ContainsAny代表的是任何匹配,也就是姓名拆分后的列表1和关键词的列表2只要有同一个关键词则作为成立的条件进行提取。如果这样写得话有优点是,可以指定一个列表的关键词去匹配,如果关键词很多那就不需要一个一个or去连接,而直接用列表去匹配。
Table.SelectRows(源, each List.Contains({"张三","张四","李四"},[姓名]))
=
解释:这次把条件倒过来了,通过一个姓名列表去筛选源表中符合条件的数据。把姓名中含有{"张三","张四","李四"}这个列表的数据筛选出来。
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)