目录
- [一. 根据数值筛选](#一. 根据数值筛选)
-
- [1.1 筛选指定字段大于指定值的数据](#1.1 筛选指定字段大于指定值的数据)
- [1.2 筛选出大于平均值的数据](#1.2 筛选出大于平均值的数据)
- [二. 根据字符串筛选](#二. 根据字符串筛选)
-
- [2.1 指定字符串 `开头` 或 `结尾`](#2.1 指定字符串
开头或结尾) - [2.2 字符串是否包含](#2.2 字符串是否包含)
- [2.3 字符串是否相等](#2.3 字符串是否相等)
- [2.4 字符串是否为空](#2.4 字符串是否为空)
- [2.5 多条件组合](#2.5 多条件组合)
- [2.1 指定字符串 `开头` 或 `结尾`](#2.1 指定字符串
- [三. 根据列表筛选](#三. 根据列表筛选)
一. 根据数值筛选
1.1 筛选指定字段大于指定值的数据
- 筛选数学字段 > 80 并且 英语字段 > 70 的数据
js
= Table.SelectRows(更改的类型, each [数学] > 80 and [英语] > 70)
1.2 筛选出大于平均值的数据
🔷原始数据

🔷添加步骤,分别计算出数学和英语的平均分
js
= List.Average(数据[数学])

🔷最后再过滤即可
js
= Table.SelectRows(数据, each [数学] > 数学平均 and [英语] > 英语平均)

二. 根据字符串筛选
2.1 指定字符串 开头 或 结尾
Comparer.OrdinalIgnoreCase用来忽略大小写
js
= Table.SelectRows(
更改的类型,
each Text.StartsWith([列名], "Request")
)
= Table.SelectRows(
更改的类型,
each Text.StartsWith([列名], "request", Comparer.OrdinalIgnoreCase)
)
js
= Table.SelectRows(
更改的类型,
each not Text.StartsWith([列名], "doservice")
)
js
= Table.SelectRows(
更改的类型,
each Text.EndsWith([列名], ".txt")
)
2.2 字符串是否包含
js
= Table.SelectRows(
更改的类型,
each Text.Contains([列名], "Test")
)
= Table.SelectRows(
更改的类型,
each not Text.Contains([列名], "Test")
)
2.3 字符串是否相等
js
= Table.SelectRows(
更改的类型,
each [列名] = "OK"
)
= Table.SelectRows(
更改的类型,
each [列名] <> "Error"
)
2.4 字符串是否为空
js
= Table.SelectRows(
更改的类型,
each [列名] = ""
)
= Table.SelectRows(
更改的类型,
each [列名] <> null and [列名] <> ""
)
2.5 多条件组合
js
= Table.SelectRows(
更改的类型,
each Text.StartsWith([列名], "Request") and not Text.Contains([列名], "Test")
)
js
= Table.SelectRows(
更改的类型,
each List.AnyTrue({
Text.StartsWith([负责人], "张"),
Text.StartsWith([负责人], "李")
})
)
三. 根据列表筛选
🔷筛选姓名列为指定List中的值
js
= Table.SelectRows(
更改的类型,
each List.Contains({"张三","李四","王五"}, [姓名])
)
🔷在工作当中,名单一般会来自一张指定的表
假设:
- 有一个表叫 白名单
- 里面有一列 姓名
js
let
名单 = 白名单[姓名],
结果 =
Table.SelectRows(
更改的类型,
each List.Contains(名单, [姓名])
)
in
结果
💥如果列表中的数据有很多的话,更加推荐使用左外连接去查询,效率更高。